Xcode 9 distribution build échoue à cause du format des exportOptions.plist a changé dans la nouvelle version

j'essaie de compiler un IPA ad-hoc pour mon application en utilisant la version 6.1.2 du SDK et la version 9 beta du Xcode (j'essaie de voir si l'application fonctionne dans la nouvelle version). Mon build é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 compilation échoue seulement en 11.0. Quelqu'un peut-il m'aider à identifier le problème?

19
demandé sur Kamchatka 2017-08-18 06:38:11

2 réponses

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

le problème semble être que l'exportOptions.le format plist n'est pas compatible avec Xcode 9. Un os à nu de distribution plist pour Xcode 9 ressemble à 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 cours d'exécution xcodebuild -help.

Vous pouvez obtenir un aperçu de comment ça fonctionne Xcode 9 en regardant cette vidéo: https://developer.apple.com/videos/play/wwdc2017/403/

vous pouvez aussi obtenir de l'aide en cherchant 'signature manuelle' dans le champ de recherche de Xcode.

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

vous devez être conscient que si vous suivez les pas 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 quelle est la valeur de vos profils d'approvisionnement dans le exportOptionsPlist le fichier, vous pouvez afficher le contenu de la .vous souhaitez utiliser le fichier mobileprovision et définir la clé de l'ID bundle de votre application ('com.foo') et la valeur de l'UUID de votre .fichier mobileprovision.

vous pouvez voir les profils de provisionnement que la construction utilisera en regardant ici: ls ~/Library/MobileDevice/Provisioning\ Profiles/

22
répondu ablarg 2018-06-08 16:47:19

utiliser la commande /Applications/Xcode-beta.app/xcodebuild -help. Vous aurez une information détaillée sur exportOptionsPlist Les clés disponibles pour-exportOptionsPlist:

....

profilsprovisionnels: Dictionary

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

....

voici un exemple d'option 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>
7
répondu Victor Choy 2017-09-01 13:11:55