web-dev-qa-db-fra.com

La construction de la distribution Xcode 9 échoue car le format de exportOptions.plist a changé dans la nouvelle version

J'essaie de compiler une IPA ad-hoc pour mon application à l'aide du SDK version 6.1.2 et de Xcode 9 beta (j'essaie de voir si l'application fonctionne dans la nouvelle version). Ma construction échoue avec le message d'erreur suivant:

Error Domain=IDEProvisioningErrorDomain Code=9 ""DGHospice.app" 
requires a provisioning profile." UserInfo=
{NSLocalizedDescription="DGHospice.app" requires a provisioning 
profile., NSLocalizedRecoverySuggestion=Add a profile to the 
"provisioningProfiles" dictionary in your Export Options property  
list.}

Le profil de distribution est valide et je peux créer un IPA si j'utilise iOS SDK 10. La génération échoue uniquement dans la version 11.0. Quelqu'un peut-il m'aider à identifier le problème?

22
tutiplain

Il semble que vous utilisiez la signature de code manuelle (déduite par le Export Options property list dans votre message d'erreur). Vous devriez probablement passer à la signature automatique de code comme recommandé par Apple si cela vous convient.

Le problème semble être que le format exportOptions.plist n’est pas compatible avec Xcode 9. Un plist de distribution des os nus pour Xcode 9 ressemble maintenant à ceci:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
      <key>provisioningProfiles</key>
      <dict>
        <key>MY_APP_BUNDLE_ID</key>
        <string>MY_PROFILE_NAME_AS_SHOWN_BY_XCODE or UUID_FOUND_IN_MOBILEPROVISION_FILE</string>
      </dict>
      <key>signingCertificate</key>
      <string>iOS Distribution</string>
      <key>signingStyle</key>
      <string>manual</string>
      <key>teamID</key>
      <string>MY_TEAM_ID</string>
  </dict>
</plist>

Vous pouvez voir la liste des options supportées pour le exportOptions.plist en exécutant xcodebuild -help.

Vous pouvez obtenir un aperçu utile de la façon dont cela fonctionne dans Xcode 9 en regardant cette vidéo: https://developer.Apple.com/videos/play/wwdc2017/403/

Vous pouvez également obtenir de l'aide en recherchant 'Signature manuelle' dans le champ de recherche de Xcode.

Vous pouvez créer un mannequin exportOptions.plist fichier en suivant le processus décrit ici par Anna Bátki à BitRise: http://blog.bitrise.io/2017/08/15/new-export-options-plist-in-Xcode-9.html

Vous devez savoir que si vous suivez les étapes d'Anna en utilisant Xcode 9 beta 5, le exportOptionsPlist ne sera pas exporté. Ce comportement fonctionne à nouveau dans Xcode 9 GM.

Pour déterminer la valeur de votre profil d'approvisionnement dans le fichier exportOptionsPlist, vous pouvez afficher le contenu du fichier .mobileprovision que vous souhaitez utiliser et définir la clé sur l'identifiant de l'ensemble de votre application ('com.foo'). et la valeur de l'UUID de votre fichier .mobileprovision.

Vous pouvez voir les profils de provisioning que la construction va utiliser en regardant ici: ls ~/Library/MobileDevice/Provisioning\ Profiles/

Un autre outil utile consiste à utiliser la fonction QuickLooks du Finder pour voir les valeurs des profils de provision sans avoir à lancer l'éditeur.

30
ablarg

utiliser la commande /Applications/Xcode-beta.app/xcodebuild -help. Vous aurez des informations détaillées sur exportOptionsPlist Clés disponibles pour -exportOptionsPlist:

....

provisioningProfiles: Dictionnaire

Pour la signature manuelle uniquement. Spécifiez le profil de provisioning à utiliser pour chaque exécutable de votre application. Les clés de ce dictionnaire sont les identificateurs de paquet des exécutables; les valeurs sont le nom du profil d'approvisionnement ou l'UUID à utiliser.

....

Voici un exemple sur les options plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>provisioningProfiles</key>
    <dict>
        <key>com.aaa.bbb</key>
        <string>adhoc_bbb</string>
        <key>com.aaa.ccc</key>
        <string>adhoc_ccc</string>
    </dict>
    <key>method</key>
    <string>ad-hoc</string>
    <key>uploadBitcode</key>
    <false/>
    <key>uploadSymbols</key>
    <true/>
</dict>
</plist>
9
Victor Choy