J'utilise l'outil de ligne de commande xcodebuild pour exporter des fichiers .ipa à partir d'archives Xcode. Cela fonctionnait bien jusqu'à Xcode 8.3.3. La même configuration a cessé de fonctionner avec Xcode 9 beta. Maintenant, il échoue avec cette erreur:
IDEDistribution: Step failed: <IDEDistributionSigningAssetsStep: 0x7fc309310550>: Error Domain=IDEDistributionSigningAssetStepErrorDomain Code=0 "Locating signing assets failed."
Il semble que Xcode 9 ne puisse pas localiser les profils d'approvisionnement, mais pourquoi?
Dans mon cas, le problème a été résolu par les champs suivants dans le -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>
Donc, apparemment, j'ai dû régler: compileBitcode
, method
, provisioningProfiles
, signingCertificate
, signingStyle
et teamID
.
Dans votre cas, l'ensemble des champs peut être différent. J'ai découvert mon jeu en archivant et en exportant le .ipa
via Xcode 9. XCode exportera son exportOptionsPlist
avec l'ipa et affichera les champs qu'il a utilisés.
Plus d'informations sur la découverte des champs: https://blog.bitrise.io/new-export-options-plist-in-xcode-9
J'exécutais cette commande:
xcodebuild -exportArchive -archivePath archive.xcarchive -exportPath /my/export/path -exportOptionsPlist options.plist
Mon projet utilise la signature manuelle. Il s'avère que Xcode 9 a besoin des noms de profil d'approvisionnement ou des UUID spécifiés dans options.plist pour signer le fichier .ipa exporté. J'ai ajouté cette entrée à mes options.plist:
<key>provisioningProfiles</key>
<dict>
<key>com.myapp.bundle.id</key>
<string>My AdHoc Provisioning Profile Name</string>
</dict>
Et l'erreur "Échec de la localisation des actifs de signature" a disparu. Cependant, il y a eu une autre erreur:
IDEDistribution: Step failed: <IDEDistributionPackagingStep: 0x7f9dfd8e5930>: Error Domain=IDEFoundationErrorDomain Code=1 "ipatool failed with an exception: #<CmdSpec::NonZeroExcitException: CmdSpec::NonZeroExcitException>
Xcode 9 recompile l'application à partir du bitcode par défaut. J'ai surmonté cette erreur en désactivant le bitcode en ajoutant une autre entrée à mes options.plist:
<key>compileBitcode</key>
<false/>
Maintenant, je peux enfin créer mon application avec Xcode 9 et exporter des fichiers ipa avec xcodebuild sans erreurs.