webentwicklung-frage-antwort-db.com.de

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

Ich versuche, mit SDK Version 6.1.2 und Xcode 9 Beta ein Ad-hoc-IPA für meine App zu kompilieren (um festzustellen, 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 einen IPA erstellen, wenn ich iOS SDK 10 verwende. Die Erstellung schlägt nur in 11.0 fehl. Kann mir jemand helfen, das Problem zu lokalisieren?

22
tutiplain

Anscheinend verwenden Sie die manuelle Codesignatur (abgeleitet von Export Options property list In Ihrer Fehlermeldung). Sie sollten wahrscheinlich auf automatische Codesignatur umschalten, wie von Apple empfohlen, wenn dies Ihren Anforderungen entspricht.

Das Problem scheint zu sein, dass das exportOptions.plist-Format nicht mit Xcode 9 Kompatibel ist. Eine Bare-Bones-Verteilungsliste 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 exportOptions.plist Anzeigen, indem Sie xcodebuild -help Ausführen.

Sie können sich einen nützlichen Überblick über die Funktionsweise dieses Materials in Xcode 9 Verschaffen, indem Sie sich dieses Video ansehen: https://developer.Apple.com/videos/play/wwdc2017/403/

Sie können auch nach Hilfe suchen, indem Sie im Suchfeld von Xcode nach "Manuelles Signieren" suchen.

Sie können eine Dummy-Datei exportOptions.plist Erstellen, indem Sie den hier von Anna Bátki bei BitRise dokumentierten Vorgang befolgen: http://blog.bitrise.io/2017/08/15/new-export-options-) plist-in-Xcode-9.html

Beachten Sie, dass das exportOptionsPlist nicht exportiert wird, wenn Sie Annas Schritten mit Xcode 9 beta 5 Folgen. Dieses Verhalten funktioniert wieder in Xcode 9 GM.

Um den Wert Ihres Bereitstellungsprofils in der Datei exportOptionsPlist zu ermitteln, können Sie den Inhalt der zu verwendenden .mobileprovision-Datei anzeigen und den Schlüssel auf die Bundle-ID Ihrer Anwendung setzen ('com.foo'). und den Wert für die UUID in Ihrer .mobileprovision-Datei.

Sie können die Bereitstellungsprofile sehen, die der Build verwenden wird: ls ~/Library/MobileDevice/Provisioning\ Profiles/

Ein weiteres nützliches Tool ist die Verwendung der QuickLooks-Funktion des Finders, um die Werte der Bereitstellungsprofile anzuzeigen, ohne den Editor starten zu müssen.

30
ablarg

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

....

provisioningProfiles: Dictionary

Nur zum manuellen Signieren. Geben Sie das Bereitstellungsprofil an, das für jede ausführbare Datei in Ihrer App verwendet werden soll. Schlüssel in diesem Wörterbuch sind die Paket-IDs von ausführbaren Dateien. Werte sind der Name des Bereitstellungsprofils oder die zu verwendende UUID.

....

Hier ist ein Beispiel für 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>
9
Victor Choy