コマンドラインのxcodebuildツールを使用して、Xcodeアーカイブから.ipaファイルをエクスポートしています。 Xcode 8.3.3までは正常に動作していました。同じセットアップは、Xcode 9ベータ版では動作しなくなりました。今、このエラーで失敗します:
IDEDistribution: Step failed: <IDEDistributionSigningAssetsStep: 0x7fc309310550>: Error Domain=IDEDistributionSigningAssetStepErrorDomain Code=0 "Locating signing assets failed."
Xcode 9はプロビジョニングプロファイルを見つけることができないようですが、なぜですか?
私の場合、問題は-exportOptionsPlist
plistの次のフィールドによって解決されました。
<dict>
<key>compileBitcode</key>
<false/>
<key>method</key>
<string>ad-hoc</string>
<key>provisioningProfiles</key>
<dict>
<key>com.my.bundle.id</key>
<string>AD_HOC_PROVISIONING_PROFILE_NAME</string>
</dict>
<key>signingCertificate</key>
<string>CERTIFICATE_HASH</string>
<key>signingStyle</key>
<string>manual</string>
<key>teamID</key>
<string>TEAM_ID</string>
</dict>
そのため、どうやらcompileBitcode
、method
、provisioningProfiles
、signingCertificate
、signingStyle
、teamID
を設定する必要がありました。
あなたの場合、フィールドのセットは異なる場合があります。 Xcode 9を介して.ipa
をアーカイブおよびエクスポートすることでセットを見つけました。XCodeはexportOptionsPlist
をipaでエクスポートし、使用したフィールドを表示します。
フィールド検出の詳細: https://blog.bitrise.io/new-export-options-plist-in-xcode-9
私はこのコマンドを実行していました:
xcodebuild -exportArchive -archivePath archive.xcarchive -exportPath /my/export/path -exportOptionsPlist options.plist
私のプロジェクトは手動署名を使用しています。 Xcode 9では、エクスポートされた.ipaファイルに署名するために、options.plistで指定されたプロビジョニングプロファイル名またはUUIDが必要であることがわかりました。私はこのエントリをoptions.plistに追加しました:
<key>provisioningProfiles</key>
<dict>
<key>com.myapp.bundle.id</key>
<string>My AdHoc Provisioning Profile Name</string>
</dict>
また、「署名アセットの検索に失敗しました」というエラーはなくなりました。ただし、別のエラーがありました。
IDEDistribution: Step failed: <IDEDistributionPackagingStep: 0x7f9dfd8e5930>: Error Domain=IDEFoundationErrorDomain Code=1 "ipatool failed with an exception: #<CmdSpec::NonZeroExcitException: CmdSpec::NonZeroExcitException>
Xcode 9は、デフォルトでビットコードからアプリを再コンパイルします。 options.plistに別のエントリを追加してビットコードをオフにすることで、このエラーを乗り越えました。
<key>compileBitcode</key>
<false/>
これで、ようやくXcode 9でアプリをビルドし、xcodebuildでipaファイルをエラーなしでエクスポートできるようになりました。