Hochladen eines Builds, der von einem Xcode-Bot signiert wurde, um testflight abzulehnen, für den Fehler get-task-allow

8

Beim Versuch, eine signierte .ipa-Datei, die von einem Xcode Bot erstellt wurde, zu TestFlight hochzuladen, habe ich den Standard

bekommen
  

"Ungültige IPA: Die Werte für get-task-allow in embedded.mobileprovision und Ihre Binärdatei stimmen nicht überein. Sind Sie sicher, dass Sie die IPA mit demselben Zertifikatstyp erstellt haben, den Sie zum Kompilieren verwendet haben?"

Warnung. Das Problem ist, dass es für diese Anwendung keine Berechtigungsdatei gibt, und ich bin absolut sicher, dass die App mit dem entsprechenden Zertifikat signiert wird.

  • Mein Bot verwendet ein Build-Schema, das bei der Archivierung meine Ad-Hoc-Build-Konfiguration verwendet.
  • Meine Ad-Hoc Build-Konfiguration ist ein Duplikat meiner Release-Konfiguration außer ...
  • Die Code Signing-Identität ist explizit auf das Verteilungszertifikat für das Konto dieser Anwendung festgelegt.

Wenn ich die .ipa entzippe und dann codesign -d -vvvv /path/to/The.app starte, wird bestätigt, dass die App mit dem entsprechenden Verteilungszertifikat signiert wurde. Ich bin auch in der Lage, Craig Hockenberrys super-nützliches Quicklook-Plugin um zu bestätigen, dass embedded.mobileprovision das geeignete Ad-Hoc-Bereitstellungsprofil ist.

Der super-komische / frustrierende Teil - wenn ich das .xcarchive herunterlade, das der Bot erstellt und dann mit einem Doppelklick signiert hat, dann geht es über den traditionellen Distribute ... Button innerhalb des Organizers, der ohne Test auf TestFlight hochlädt hitch.

Ich habe dieselbe Codesign-Prüfung für die Version durchgeführt, die erfolgreich hochgeladen wurde, und mit Ausnahme von CDHash und dem Datum, an dem die .ipa-Datei erstellt wurde, sind die Ergebnisse identisch.

Apples Dokumentation auf Codesignierung (nach unten scrollen zu "Code Directory Hash") scheint darauf hinzuweisen, dass die nicht übereinstimmenden Hashes bedeuten könnten, dass etwas falsch gelaufen ist:

  

Da sich das Codeverzeichnis ändert, wenn sich das Programm auf nichttriviale Weise ändert, kann dieser Test verwendet werden, um eine bestimmte Version eines Programms eindeutig zu identifizieren.

Jeder hat die leiseste Ahnung, was das sein könnte? Das Archiv, das ich benutze, um die .ipa zu erzeugen, die funktioniert, ist das heruntergeladene Produkt aus dem gleichen Build-Produktordner wie die .ipa, die nicht funktioniert. Wenn ich also die Dokumentation richtig verstanden habe, sollten die Hashes identisch sein. Oder missverstehe ich, dass die Dokumentation und etwas anderes schiefgelaufen ist?

Update 12/30: Eine andere Sache, die ich nach der Empfehlung eines Freundes bemerkte: Das Build-Produkt, das direkt vom Xcode Bot kommt, wird direkt auf meinem Handy installiert (welches ist auf dem Provisioning-Profil in Frage) durch den Xcode Organizer ohne Problem. Per href="https://twitter.com/testflightapp/status/417738098647511040"> habe ich per E-Mail die zu Testflug baut und sie sehen, wenn es irgendein Problem gibt sie auf ihre finden Ende.

Update 2, 12/30: Ich werde feststellen, dass dieses Script von Matt Vlasach funktioniert zwar, aber es signiert die App tatsächlich mit einem Cert- und Provisioning-Profil aus dem Archiv - theoretisch sollte man nicht t müssen Sie diesen Schritt hinzufügen, wenn das Cert- und das Provisioning-Profil mit denen übereinstimmen, die in Ihrem Build-Schema angegeben sind. Es sollte nur möglich sein, das .ipa-Build-Produkt direkt hochzuladen. Matt geht nicht ins Detail darüber, warum er diesen Schritt in seinem Beitrag hinzugefügt hat - irgendjemand mit irgendwelchen Gedanken dazu?

Update 3, 1/2: Das Mysterium vertieft sich: Wenn ich das Build-Produkt direkt aus dem Xcode Bot nehme und es mit TestFlight's Desktop-App , es lädt gut, installiert auf meinem Telefon (das ist auf dem Provisioning-Profil) gut, und öffnet und funktioniert gut, nachdem es installiert ist. Ich habe dem Support-Team von TestFlight eine Reihe von Protokollen für ihre Anfrage geschickt, sie werden einen Blick darauf werfen, wie der wtfbbq läuft, und ich melde mich zurück, wenn ich von ihnen zurückmache.

    
DesignatedNerd 20.12.2013, 20:12
quelle

2 Antworten

5

Woo!

  

Am 24. Januar 2014 um 04.39 Uhr PST TestFlight Support schrieb:

     

Hallo Ellen,

     

Unser Team hat eine Lösung für dieses Problem bereitgestellt.

     

Bitte lassen Sie uns wissen, wenn Sie Probleme haben.

Ich habe heute Morgen bestätigt, dass meine Builds, die zuvor bei einem get-task-allow -Ausgabe abgelehnt wurden, jetzt glücklich hochgeladen werden. Wenn Sie immer noch Probleme haben und alle oben genannten Schritte ausprobiert haben, empfehle ich Ihnen dringend, sich direkt an den TestFlight-Support zu wenden. Sie sind sehr hilfreich.

    
DesignatedNerd 24.01.2014, 15:36
quelle
0

Ich habe dieses Problem kürzlich bekommen und baute über die Kommandozeile auf. Ich erkannte, dass der Befehl xcodebuild Bereitstellungsprofile und Signaturen willynilly auswählen. Wenn Sie dann den kompilierten Ordner mit xcrun und PackageApplication signiert haben, kann er ihn mit einem anderen sig- oder Bereitstellungsprofil signieren.

Um es zu beheben, geben Sie das Signatur- und Bereitstellungsprofil an, das xcodebuild verwenden soll.

Dies ist das, was es zuvor war, mit Ausnahme des nachfolgenden Aufrufs von xcrun zum Signieren und Packen der App. xcodebuild -sdk iphoneos -konfiguration Freigabe

Dies wurde benötigt xcodebuild -sdk iphoneos -konfiguration Freigabe CODE_SIGN_IDENTITY = PROVISIONING_PROFILE =

Ohne es können Sie alles vom Unterzeichnen der Identität zu nicht übereinstimmenden Signaturen erhalten, wenn es ein anderes Zertifikat vollständig findet.

    
Sojurn 04.06.2014 04:46
quelle