Frage Die Erstellung von Xcode 9-Distributionen schlägt fehl, da das Format von exportOptions.plist in der neuen Version geändert wurde


Ich versuche, eine Ad-hoc IPA für meine App mit SDK Version 6.1.2 und Xcode 9 Beta zu kompilieren (versuchen zu sehen, ob die App in der neuen Version funktioniert). Mein Build schlägt mit der folgenden Fehlermeldung fehl:

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.}

Das Verteilungsprofil ist gültig, und ich kann eine IPA erstellen, wenn ich iOS SDK 10 verwende. Build schlägt nur in 11.0 fehl. Kann mir jemand helfen, das Problem genau zu bestimmen?


19
2017-08-18 03:38


Ursprung


Antworten:


Es scheint, dass Sie manuelle Codesignierung verwenden (abgeleitet von der Export Options property list in Ihrer Fehlermeldung). Sie sollten wahrscheinlich zur automatischen Codesignierung wie von Apple empfohlen wechseln, wenn es Ihren Anforderungen entspricht.

Das Problem scheint zu sein, dass das Format exportOptions.plist nicht kompatibel ist Xcode 9. Eine bloße Knochen Distribution plist für Xcode 9 sieht jetzt ähnlich aus:

<?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>

Sie können die Liste der unterstützten Optionen für die exportOptions.plist durch Laufen xcodebuild -help.

Sie können einen nützlichen Überblick darüber bekommen, wie das funktioniert Xcode 9 indem du dieses Video anschaust: https://developer.apple.com/videos/play/wwdc2017/403/

Sie können auch Hilfe erhalten, indem Sie im Suchfeld von Xcode nach "Manual Signing" suchen.

Sie können einen Dummy erstellen exportOptions.plist Datei, indem Sie den von Anna Bátki bei Bitrise dokumentierten Prozess befolgen: http://blog.bitrise.io/2017/08/15/new-export-options-plist-in-Xcode-9.html

Sie sollten sich dessen bewusst sein, wenn Sie den Schritten von Anna folgen Xcode 9 beta 5, das exportOptionsPlist wird nicht exportiert. Dieses Verhalten funktioniert wieder in Xcode 9 GM.

Um festzustellen, wie der Wert Ihres Bereitstellungsprofils in der exportOptionsPlist Datei können Sie den Inhalt der .mobileprovision-Datei anzeigen, die Sie verwenden möchten, und den Schlüssel für die Bundle-ID Ihrer Anwendung ('com.foo') und den Wert für die UUID in Ihrer .mobileprovision-Datei festlegen.

Sie können die Bereitstellungsprofile sehen, die der Build verwendet, indem Sie hier nachsehen: ls ~/Library/MobileDevice/Provisioning\ Profiles/


22
2017-08-25 19:40



Verwenden Sie den Befehl /Applications/Xcode-beta.app/xcodebuild -help. Sie erhalten detaillierte Informationen über exportOptionsPlist Verfügbare Schlüssel für -exportOptionsPlist:

....

provisioningProfiles: Wörterbuch

Nur für manuelle Signaturen. Geben Sie das Bereitstellungsprofil an, für das es verwendet werden soll   jede ausführbare Datei in Ihrer App Schlüssel in diesem Wörterbuch sind das Bündel   Bezeichner ausführbarer Dateien; Werte sind der Name des Bereitstellungsprofils   oder UUID zu verwenden.

....

Hier ist ein Beispiel über die 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
2017-09-01 13:11