web-dev-qa-db-fra.com

xcodebuild -exportArchive échoue avec une erreur La localisation des actifs de signature a échoué

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?

13
Vladimir Grigorov

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

11
Anton Ogarkov

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.

11
Vladimir Grigorov