xcodebuild -exportArchive завершается с ошибкой
Я использую инструмент командной строки xcodebuild для экспорта.ipa файлов из архивов Xcode. Он отлично работал с Xcode 8.3.3. Такая же настройка перестала работать с Xcode 9 beta. Теперь с этой ошибкой не получается:
IDEDistribution: Step failed: <IDEDistributionSigningAssetsStep: 0x7fc309310550>: Error Domain=IDEDistributionSigningAssetStepErrorDomain Code=0 "Locating signing assets failed."
Кажется, что Xcode 9 не может найти профили обеспечения, но почему?
Ответы
Ответ 1
Я выполнял эту команду:
xcodebuild -exportArchive -archivePath archive.xcarchive -exportPath /my/export/path -exportOptionsPlist options.plist
Мой проект использует ручную подпись. Оказывается, Xcode 9 нуждается в именах профиля обеспечения или UUID, указанных в options.plist, чтобы подписать экспортированный.ipa файл. Я добавил эту запись в мои параметры. 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 по умолчанию перекомпилирует приложение из битового кода. Я преодолел эту ошибку, отключив биткод, добавив еще одну запись в мои параметры. Plist:
<key>compileBitcode</key>
<false/>
Теперь я наконец смогу создать свое приложение с Xcode 9 и экспортировать файлы ipa с помощью xcodebuild без ошибок.
Ответ 2
В моем случае проблема была решена следующими полями в -exportOptionsPlist
:
<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
.
В вашем случае набор полей может быть другим. Я узнал свой набор, архивируя и экспортируя .ipa
через Xcode 9. XCode экспортирует свой exportOptionsPlist
с ipa и покажет, какие поля он использовал.
Дополнительная информация об обнаружении полей: https://blog.bitrise.io/new-export-options-plist-in-xcode-9