1. ホーム
  2. iphone

[解決済み] 再署名 IPA (iPhone)

2022-05-12 17:33:48

質問

私は現在、xcodebuild と xcrun を使って hudson ですべてのアプリケーションを問題なくビルドしています。

私は、企業アカウントの代わりに企業アカウントで再署名したい、異なる人からいくつかの IPA ファイルを受け取りました (アプリストア用、または時々アドホック配布用)。

問題は、アプリを辞任しようとすると、私のデバイスにインストールされないことです (それは Enterprise ビルドであるため、インストールされるはずです)。エラー メッセージは (iTunes ではなく) デバイス上にあり、アプリをインストールできなかったとだけ表示されます。それ以上の情報はありません。

いくつかの情報を見つけました、( http://www.ketzler.de/2011/01/resign-an-iphone-app-insert-new-bundle-id-and-send-to-xcode-organizer-for-upload/ )

そして、これは可能かもしれません。私が直面している問題は、通常のビルド (xcrun を使用) で行うようにモバイル プロビジョニング プロファイルを埋め込まないようです。これはコードサイン ツールで制御できますか、または xcrun で再署名できますか?

私の辞任スクリプトでは、現在、次のことを行っています。

  • app.ipaを解凍します。
  • appname=$(ls ペイロード)
  • xcrun -sdk iphoneos PackageApplication -s "$provisioning_profile" "$project_dir/Payload/$appname" -o "$project_dir/app-resigned.ipa" --sign "$provisioning_profile" --embed "$mobileprovision"

作成された ipa ファイルを見ましたが、元のアプリと非常によく似ているようです。ここで本当に変更すべきファイルは何でしょうか? 私は最初、_CodeSignature/CodeResources が変わると思っていましたが、コンテンツはほとんど同じに見えます。

ポインターは非常にありがたいです。

どのように解決するのですか?

やっと動くようになりました!

プロビジョニング プロファイルにデバイスが追加されていない状態で、app store 投入用に cert1 で署名された IPA でテストされました。その結果、企業アカウントと社内展開用のモバイル プロビジョニング プロファイルで署名された新しい IPA が得られました (モバイル プロビジョニング プロファイルは IPA に組み込まれます)。

解決策

IPAを解凍する

unzip Application.ipa

古いCodeSignatureを削除する

rm -r "Payload/Application.app/_CodeSignature" "Payload/Application.app/CodeResources" 2> /dev/null | true

埋め込まれたモバイルプロビジョニングプロファイルの置き換え

cp "MyEnterprise.mobileprovision" "Payload/Application.app/embedded.mobileprovision"

再署名

/usr/bin/codesign -f -s "iPhone Distribution: Certificate Name" --resource-rules "Payload/Application.app/ResourceRules.plist" "Payload/Application.app"

再パッケージ化

zip -qr "Application.resigned.ipa" Payload

編集: Entitlementの部分を削除(alleysのコメント参照、ありがとうございます)