2017-07-17 47 views
9

Używam narzędzia xcodebuild z wiersza polecenia do eksportowania plików .ipa z archiwów Xcode. To działało dobrze do Xcode 8.3.3. Ta sama konfiguracja przestała działać z beta Xcode 9. Teraz kończy się niepowodzeniem z tym błędem:xcodebuild -exportArchiwum kończy się niepowodzeniem z błędem Lokalizowanie zasobów podpisywania nie powiodło się

IDEDistribution: Step failed: <IDEDistributionSigningAssetsStep: 0x7fc309310550>: Error Domain=IDEDistributionSigningAssetStepErrorDomain Code=0 "Locating signing assets failed." 

Wygląda na to, że Xcode 9 nie może znaleźć profili udostępniania, ale dlaczego?

+0

Jakie są konkretne xcodebuild poleceń jesteś wykonywania? –

Odpowiedz

10

biegałam polecenia:

xcodebuild -exportArchive -archivePath archive.xcarchive -exportPath /my/export/path -exportOptionsPlist options.plist 

Mój projekt używa ręcznego podpisywania. Okazuje się, że Xcode 9 potrzebuje nazw profili lub znaków UUID podanych w options.plist, aby podpisać wyeksportowany plik .ipa. Dodałem ten wpis do mojego pliku options.plist:

<key>provisioningProfiles</key> 
<dict> 
    <key>com.myapp.bundle.id</key> 
    <string>My AdHoc Provisioning Profile Name</string> 
</dict> 

Zniknął błąd "Lokalizacja podpisywania zasobów nie powiodło się". Wystąpił jednak inny błąd:

IDEDistribution: Step failed: <IDEDistributionPackagingStep: 0x7f9dfd8e5930>: Error Domain=IDEFoundationErrorDomain Code=1 "ipatool failed with an exception: #<CmdSpec::NonZeroExcitException: CmdSpec::NonZeroExcitException> 

Xcode 9 ponownie kompiluje aplikację z Bitcode domyślnie. Mam nad tym błędem obracając bitcode wyłączyć poprzez dodanie kolejnego wpisu do mojego options.plist:

<key>compileBitcode</key> 
<false/> 

Teraz jestem w końcu w stanie zbudować moją aplikację z Xcode 9 i eksport plików IPA z xcodebuild bez błędów.

+0

Próbowaliśmy tego (zarówno z UUID, jak i naszym zdaniem) i otrzymujemy ten sam błąd. xcodebuild mówi ci * gdzie * szuka, * które * profile, które próbuje i dlaczego nie są odpowiednie, byłoby bardzo pomocne. –

+0

Ktoś dowiedzieć się, jaka jest prawdziwa przyczyna "NonZeroExcitException"? Wyłączenie Bitcode nie jest dla nas opcją. – Tres

+0

Kilka użytecznych informacji związanych z NonZeroExcitException: Pochodzi z bitcode-build-tool pythona podczas kroku archiwizacji. Xcode tworzy logi w folderze tymczasowym. Dla mnie jest to: /var/folders/62/wwfl967573n9f1g2yqg_3zg80000j_/T/MyApp_2017-09-18_10-32-23.314.xcdistributionlogs Te logi zawierają bardziej szczegółowe dane wyjściowe ze skryptu. Wygląda na to, że w kroku eksportu występuje problem z bitcodem. – Tres

8

W moim przypadku problem został rozwiązany przez najbliższe pól w -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> 

Tak, widocznie musiałem ustawić: compileBitcode, method, provisioningProfiles, signingCertificate, signingStyle i teamID.

W twoim przypadku zestaw pól może być inny. Znalazłem swój zestaw archiwizując i eksportując .ipa przez Xcode 9. XCode wyeksportuje swoją exportOptionsPlist za pomocą ipa i pokaże, jakie pola użył.

Więcej informacji na odkryciu pola: https://blog.bitrise.io/new-export-options-plist-in-xcode-9

+0

Dziękujemy! pracował dla mnie. CompileBitCode nie jest częścią problemu z podpisywaniem i może nie być potrzebny. Powinien być oznaczony jako rozwiązanie ... – moritz