Xcode 5: Fehler bei der Codesignaturberechtigung

149

Ich habe eine neue Anwendung erstellt, die IOS 7 unterstützt. Ich habe den neuen XCode 5 GM erhalten und versucht, meine Apps mit meinem neuen Bereitstellungsprofil und Verteilungszertifikat zu signieren, aber ich habe Probleme mit der Verteilung. Ich erhalte ständig folgenden Fehler:

"Ungültige Codesignaturberechtigungen. Die Berechtigungen in Ihrer App-Bundle-Signatur stimmen nicht mit denen überein, die im Bereitstellungsprofil enthalten sind. Gemäß dem Bereitstellungsprofil enthält das Bundle einen Schlüsselwert, der nicht zulässig ist: '[XXXX.com.sample .company] 'für den Schlüssel' keychain-access-groups ".

Auch der gleiche Fehler für einen Schlüsselwert wird aufgerufen application-identifier.

Screenshot des Fehlers:

Geben Sie hier die Bildbeschreibung ein

Benjamin de Bos
quelle

Antworten:

208

Die Lösung liegt in der neuen Option in Xcode 5, die das Bereitstellungsprofil angibt. Stellen Sie einfach das Bereitstellungsprofil des Projektziels auf das richtige ein, und es funktioniert.

Geben Sie hier die Bildbeschreibung ein

Benjamin de Bos
quelle
6
Um diese Antwort zu ergänzen: Ich hatte sowohl Verteilungs- als auch Release-Typen für das Bereitstellungsprofil. Ich habe den gleichen Fehler erhalten, weil ich ein Entwicklungsprofil für den Release-Typ festgelegt hatte (ich hatte gedacht, ich verwende den Distribution-Typ und habe den Release-Typ nicht bemerkt). Sobald ich das auf mein Distributionsprofil eingestellt hatte, funktionierte es.
Bek
4
Um diese Antwort weiter zu verdeutlichen, habe ich versucht, mein Bereitstellungsprofil und meine Codesignaturidentität mithilfe der kombinierten Ansicht in der obersten Zeile der einzelnen Zeilen festzulegen. Dadurch wurde es immer noch auf <Mehrere Werte> zurückgesetzt. Als ich beide Zeilen erweiterte, sah ich jedoch die Unterzeilen "Any iOS SDK" für jede Konfiguration, die alle auf "None" gesetzt waren, obwohl in den Debug / Release-Zeilen die richtige Profil- / Signaturidentität aufgeführt war. Die Archivierung in diesem Zustand gab mir immer noch den Fehler, bis ich alle "Any iOS SDK" -Zeilen explizit auf die richtigen Werte gesetzt habe.
Qix
1
Wir haben Tage damit verbracht ! Schlimme an dieser müssen wir noch das gleiche Profil wählen wieder , wenn die IPA zu bauen. Wie haben Sie davon erfahren, Benjamin?
Cregox
2
Leider funktioniert es bei mir nicht. Ich habe meine Profile auf der Website developer.apple.com überprüft und den Kauf von Game Center und In App aktiviert. Ich benutze es auch nicht und frage mich, ob das ein Problem sein könnte.
JScarry
4
Beachten Sie, dass Sie mit Xcode die Bereitstellung von Profilinformationen für ein Projekt und ein Ziel auswählen können, um weitere Erläuterungen hinzuzufügen . Sie müssen sicherstellen, dass Sie die Einstellungen für das Ziel und nicht nur für das Projekt ändern .
Brian Stormont
55

Wenn Sie wie ich sind und denken, Sie haben ALLES ausprobiert , Ihr Projekt über zehn Mal archiviert, Ihren Kopf auf die Tastatur geschlagen und trotzdem diesen Fehler erhalten. Bitte tun Sie sich selbst einen Gefallen und starten Sie XCode einfach neu , es hat bei mir funktioniert. Irgendwann Apple ... ich hasse dich.

VGruenhagen
quelle
Ich habe zwei verschiedene Apps in einer Xcode-Sitzung erstellt und 1000 Fehler erhalten. Neustart hat funktioniert. Danke!
Donmarkusi
Das hat auch bei mir funktioniert. Ich benutze Xcode 6.3. Ich konnte kein Apple Dev-Konto für die Codesignatur auswählen. Jedes Mal, wenn "ios app id 'xxxxxxxxx' Änderungen an der Kartenfunktion nicht unterstützt", wurde eine völlig unabhängige Fehlermeldung angezeigt. Ein einfacher Xcode-Neustart hat es für mich behoben.
Sahil
3
Wenn ich dich 1000 Mal positiv bewerten könnte, würde ich es tun. Das hat bei mir funktioniert. Dies geschah unter XCode 7.1.
Manu Kanthan
25

Ich habe viele der oben genannten Schritte durchlaufen, aber was schließlich für mich funktioniert hat, war das Aktualisieren meiner Profile in Xcode. Ich bin mir nicht sicher, warum dies erforderlich war, da das Distributionsprofil meiner App bereits in der Liste angezeigt wurde. Hier sind die Schritte:

  1. Xcode-Einstellungen
  2. Registerkarte "Konten"
  3. Wählen Sie Ihre Apple ID
  4. Klicken Sie im Apple ID-Detailfenster auf die Schaltfläche Details anzeigen
  5. Klicken Sie auf die Schaltfläche Aktualisieren in der unteren linken Ecke
Joe Regan
quelle
2
Sobald Sie dies getan haben, sollten Sie auch den Befehl Erstellen und Archivieren erneut ausführen, um sicherzustellen, dass das neue Profil angewendet wird. (Zumindest war das für mich notwendig.)
Brent Royal-Gordon
12

In meinem Fall habe ich in Xcode dieselben Funktionen aktiviert wie in den Anwendungsdiensten in developer.apple.com. Das funktioniert bei mir

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

novecapa
quelle
Dies hat bei mir funktioniert - ich kann diese im Entwicklercenter nicht deaktivieren, und es scheint, dass iOS 7.0, das mit Xcode 5.1.1 kompiliert wurde, sie aktiviert hat.
Matt H
6

In meinem Fall (sorry) habe ich "Team" in -> Allgemein -> Identität auf "Keine" umgestellt

In einem anderen Fall musste ich diese Identität von "Keine" auf das Entwicklerkonto umstellen, das die Identitäten und Profile verwaltet.

Xcode bringt manchmal die Codesignatur durcheinander, wie es scheint. Oder wir Sterblichen sind einfach nicht klug genug, um zu verstehen, was es tut. Gib nicht auf, wir alle machen manchmal Folter mit Code-Signierung durch!

RickJansen
quelle
Wow, du hast meinen Abend gerettet, danke. Aber ... warum hat es funktioniert?
Martin
Warum hat es funktioniert? Ich denke, Xcode ist ein äußerst komplexes Produkt, und die Identitäts- und Bereitstellungsprofile waren von Anfang an haarig. Ich denke, niemand hat mehr ein umfassendes Verständnis für die Wechselbeziehungen. Ich nicht. Manchmal ist es Versuch und Irrtum, wie dieser Thread zeigt.
RickJansen
5

In meinem Fall musste ich das richtige Bereitstellungsprofil für die Freigabe festlegen und dann Xcode neu starten. Vor dem Neustart hatte es dasselbe Bereitstellungsprofil und funktionierte nicht. Manchmal kann ein Neustart also Wunder bewirken. Vielleicht hilft das jemandem.

Beny Boariu
quelle
3

Wenn jemand ein GameCenter verwendet, überprüfen Sie diesen Abschnitt in Ihrem Ziel. Ich habe mit einem alten Projekt gearbeitet und es gab 2 Fehler (aber alles hat gut funktioniert). Durch Deaktivieren und erneutes Aktivieren wurde dieses Problem behoben.Geben Sie hier die Bildbeschreibung ein

Höchstwahrscheinlich fügt diese Aktion die Game Center-Berechtigung zur App-ID hinzu und behandelt sie selbst.

Beryllium
quelle
3

1.Gehen Sie zum Projektordner und löschen Sie * .entitlements-Dateien. 2. Gehen Sie dann zum xcode-Projektziel -> Einstellungen erstellen -> Codesignaturberechtigungen - Werte löschen. 3. Reinigen. 4. Ausführen

Vlad 25 WLD
quelle
3

Ah, dieser herrliche Fehler. Wenn ich diesen Fehler sehe, überprüfe ich folgende Dinge:

1. Erlauben Sie XCode, jederzeit auf Ihre Bereitstellungsprofilinformationen zuzugreifen - Wenn XCode beim Start immer wieder nach dem Zugriff auf die privaten Dateien Ihres Computers fragt, damit es Bereitstellungsprofilinformationen mit den Optionen abrufen kann, um den Zugriff immer und nicht jetzt zu ermöglichen. oder nur einmal - setzen Sie es auf IMMER Zugriff erlauben

2. Wenn Sie alte Berechtigungsdateien in Ihrem Projekt haben, entfernen Sie diese und alle Anzeichen davon. Wenn Sie in Ihrem Projekt eine .entitlements-Datei sehen, löschen Sie diese (oder entfernen Sie zumindest den Verweis darauf, wenn Sie sich nicht sicher sind Sie können es sofort löschen. Stellen Sie dann sicher, dass die Zeile "Code Signing Entitlements" im Abschnitt "Code Signing" in den Build-Einstellungen leer ist

3. Überprüfen Sie Ihre Anwendungsdienste online und stimmen Sie sie mit Ihren Diensten in XCode für die App ab. Gehen Sie zum Apple Member Center und überprüfen Sie die App-ID für Ihre App. Klicken Sie auf die App, um die Anwendungsdienste anzuzeigen und zu sehen, was Sie tun Nachdem Sie dies überprüft haben, gehen Sie zu XCode und überprüfen Sie Ihren Abschnitt "Funktionen", um sicherzustellen, dass beide die gleiche Liste von Apple-Diensten auf beiden haben

4. Stellen Sie sicher, dass Sie Ihrer App vor der Validierung ein gültiges Bereitstellungsprofil zuweisen. Überprüfen Sie Ihr Bereitstellungsprofil für Ihre App im Apple Member Center, stellen Sie sicher, dass es nicht abgelaufen ist und über die richtige App-ID mit der richtigen Bundle-ID und Verteilung verfügt . Laden Sie das neue Bereitstellungsprofil herunter und klicken Sie darauf, um sicherzustellen, dass XCode es hat, oder gehen Sie zu XCode> Einstellungen> Konten> klicken Sie auf Ihr Konto und klicken Sie auf "Details anzeigen". Klicken Sie dann auf die Schaltfläche in der unteren Ecke, um alle Profile mit XCode zu synchronisieren. Das Profil sollte jetzt im Abschnitt "Codesignatur" zur Auswahl stehen. Sobald Sie das richtige Bereitstellungsprofil haben, können Sie die Zeilen "Code Signing Identity" auf die richtige Option für dieses Bereitstellungsprofil einstellen.

Hinweis - Wenn Sie ein Verteilungszertifikat erstellen, kann es hilfreich sein, alle 'Code Signing Identity'-Zeilen auf die Identität festzulegen, die Sie für die Verteilung verwenden, einschließlich der Debug-Zeilen

5. WENN ALLE ANDEREN FEHLER - Bereinigen Sie Ihr Projekt und starten Sie XCode neu. Wenn Sie das nächste Mal Ihr Projekt öffnen und versuchen zu validieren, funktioniert möglicherweise etwas Apple Magic

ColossalChris
quelle
2

Wenn Sie ein altes 3.1.5-Projekt erstellen, weist Xcode 5 einige Fehler auf, die Benjamins Antwort leider unmöglich machen, da keine Bereitstellungsprofile zur Auswahl stehen. Nach vielen späten Stunden des gequälten Lesens von Xcode-Projektdateien kam ich auf diese Lösung, die für mich funktionierte:

  • Wechseln Sie im Bereich Dienstprogramme (rechts) in Xcode 5 unter Projektdokument von Xcode 3.1-kompatibel zu Xcode 3.2-kompatibel.
  • Geben Sie Ihren Organisationsnamen ein.
  • Projekt schließen.
  • Öffnen Sie Ihre Projektdatei, z open -a TextEdit path/to/name.xcodeproj/project.pbxproj
    • Entfernen Sie die beiden Verteilungsklauseln ( isa=XCBuildConfiguration).
    • Entfernen Sie die beiden zugehörigen Zeilen in buildConfiguration (eine in PBXNativeTargetund eine in PBXProject XCConfigurationLists).

Jetzt können Sie erneut öffnen, archivieren und an den App Store senden - voilà! Es funktioniert wieder!

Wie ich denke, dass es funktioniert

Ich gehe davon aus, dass dies funktioniert, weil Apple irgendwo auf der Strecke beschlossen hat, die Notwendigkeit einer separaten Distributionskonfiguration zu streichen, was eine gute Sache ist. Wenn ich archiviere, codiert Xcode automatisch Zeichen für die Verteilung. So hätte es eigentlich implementiert werden sollen. Es ist nur eine Schande, dass Apple die automatische Migration nicht zu einem Teil der IDE machen kann. Stattdessen zwingen sie uns Entwickler, Jahrzehnte damit zu verbringen, dieses Zeug zum Laufen zu bringen.

Jonas Byström
quelle
2

Ich habe seit mehr als einem Tag mit diesem Problem zu kämpfen und alle Arten von Lösungen ausprobiert, die hier und anderswo im Internet vorgeschlagen werden. Nichts hat geklappt...

Aber ich habe es endlich geschafft, das Problem zu lösen!

Das Problem, das ich hatte, war mit einer alten App, die ich seit über 3 Jahren nicht mehr berührt habe, und jetzt wollte ich ein lang erwartetes Update veröffentlichen. Seit ich die App veröffentlicht habe, aktualisiert Apple die Funktionsweise der Zertifikate und der App-ID. Sie haben das Konzept der Team-ID eingeführt, dessen Verwendung empfohlen wird. Insbesondere auf der Apple-Website "Zertifikate, Kennungen und Profile" wurden seitdem viele Änderungen vorgenommen.

Dort stellte ich fest, dass das Bereitstellungsprofil, das ich für die App Store-Verteilung verwendete, mit der App-ID verbunden war, ED8xxxxxxx.com.rostsolutions.*aber als ich mir die App-ID für das Spiel ansah, das ich einreichen wollte, stellte ich fest, dass die App-ID war ATMxxxxxxx.com.rostsolutions.Swisch. Das App ID-Präfix stimmte also nicht überein! Das schien die Wurzel des Problems zu sein. Ich habe also ATMxxxxxxx.com.rostsolutions.Swischstattdessen ein neues Bereitstellungsprofil erstellt, das mit der App-ID verbunden ist . Mit diesem Bereitstellungsprofil habe ich meine App erfolgreich an den App Store gesendet und jetzt drücke ich nur die Daumen, dass alles andere an Apples Seite gut funktioniert.

(Ich habe zuerst versucht, eine Verbindung zu einem neuen Bereitstellungsprofil mit der Platzhalter-ID ATMxxxxxxx.com.rostsolutions.*herzustellen, aber das schien nicht zu funktionieren.)

Was mich jedoch verwundert, ist, dass wenn ich mir die alte App in iTunes Connects ansehe und zu Binärdetails gehe, die App-ID lautet ED8xxxxxxx.com.rostsolutions.Swisch. Warum wird auf der Seite "Zertifikate, Kennungen und Profile" die App-ID als aufgeführt ATMxxxxxxx.com.rostsolutions.Swisch?

Daniel
quelle
Danke, dass du diesen Daniel gepostet hast. Ich sehe ein ähnliches Verhalten, das verhindert, dass gewünschte Zertifikate und Profile verwendet werden. Jedes Mal, wenn ich ein Zertifikat herunterlade oder Xcode dies erlaube, wird eine "Phantom" -Team-ID angezeigt, die die iCloud-Funktion (Verwendung) in meinem Fall "bricht". Noch keine Lösung für mich.
David
OH MEIN GOTT! Der gleiche Mist passiert uns mit über 50 Apps! Ugh, das Phantomteam bringt uns um. Warum Apple Warum! ????
Sukima
2

Mein Problem wurde gelöst, indem meine Apple ID aus den Einstellungen-> Konten entfernt und dann wieder hinzugefügt wurde. Dann wurden alle meine Bereitstellungsprofildateien im Dienstprogrammfenster Details anzeigen angezeigt. Ich habe fälschlicherweise "Mac Team Provisioning Profile: *" anstelle des eigentlichen Distributionsbereitstellungsprofils für das Projekt ausgewählt, da ich dachte, es sei eine generische Auswahl. Bereitstellungsdateien müssen projektspezifisch sein. Stellen Sie übrigens sicher, dass Ihr Bereitstellungsprofil über die richtigen Berechtigungen verfügt (z. B. Karten). Ich habe es geschafft, eine App mit OSX Maps ohne die Berechtigung zu veröffentlichen, und Apple hat sie genehmigt - aber in der Produktionsversion wurden keine Karten angezeigt!

Brainware
quelle
1

In meinem Fall hatte ich das gleiche Problem. Meine Lösung bestand darin, das 'Release Provisioning Profile' in den Build-Einstellungen zu ändern, bevor Sie die Archivierung durchführen. Ich mache das zweimal, einmal für die App Store-Verteilung und einmal für die Ad-hoc-Verteilung. Ich füge auch einen Kommentar zu meinen Archiven hinzu. Mein Fazit ist, dass an der "Neuunterzeichnung des Archivs" etwas kaputt ist.

Tyrannisieren
quelle
1

Auf dieser Website finden Sie ein sehr gutes Tutorial zur Lösung dieses Problems .

Es heißt, dass dieses Problem auftreten kann, wenn sich Ihre Projects Bundle-ID von der auf der iTunes Connect-Website eingegebenen unterscheidet .

130e13a
quelle
1

Ich denke, xcode 5 verwendet "release" anstelle von "Distribution", die Sie möglicherweise selbst erstellt haben.

superarts.org
quelle
1

Wenn alles oben nicht funktioniert hat (in meinem Fall nach ein paar Tagen kein Glück , alles zu versuchen), habe ich nur eine Mac-Anwendung. Seien Sie vorsichtig mit Widerruf!

1) Alle "Mac App Distribution" und "Mac Installer Distribution" von Hand
widerrufen. 2) Relevante Zertifikate und offene Schlüssel im Schlüsselbund bereinigen ( Warnung: Vor dem Löschen exportieren).
3) Xcode neu starten. 4) Gehen Sie zu (in Safari) developer.apple .com -> Zertifikate , etc. 5) erstellen CertificateSigningRequest.certSigningRequest in Keychain-> Zertifikatsassistenten
6) von Hand erstellen auf developer.apple.com sowohl "Mac App Distribution" und "Mac Installer Distribution" mit Ihrem * .certSigningRequest
7) Provisioning Profile -> Verteilung -> Benutzerdefinierte Bereitstellung für AppStore erstellen / korrigieren (ich werde speziell als "Mac-Bereitstellungsprofil für AppStore" bezeichnet
8) Xcode -> Einstellungen -> Konto -> Ihr Konto ->Aktualisieren 9) Xcode Clean -> Archiv -> Validieren

WINSergey
quelle
1

Ich hatte mit ähnlichen Problemen zu kämpfen (ich habe für die Ad-hoc-Verteilung gebaut). Das einzige, was sich seit der letzten erfolgreichen Bereitstellung geändert hat, war das Hinzufügen von zwei Geräten zum Bereitstellungsprofil.

Nachdem ich alle Build-Einstellungen doppelt und dreifach überprüft hatte, habe ich das Bereitstellungsprofil neu generiert (ohne etwas zu ändern), es erneut heruntergeladen und es hat einwandfrei funktioniert.

Beachten Sie also: Wenn es keine logische Erklärung gibt, können Sie immer gutes altes IT-Voodoo ausprobieren.

Ich empfehle auch das iPhone-Konfigurationsdienstprogramm , das trotz seines Namens nützlich ist, um zu überprüfen, welche Bereitstellungsprofile Sie auf dem Computer haben.

Tomek Cejner
quelle
1

FEHLER ITMS-9000: „Dieses Bundle ist ungültig. Neue Apps und App-Updates, die an den App Store gesendet werden, müssen mit öffentlichen (GM) Versionen von XCode 5.1.1 oder höher und iOS 7 SDK erstellt werden. Senden Sie keine Apps, die mit Beta-Software erstellt wurden.

hi0001234d
quelle
0

Wenn mehrere Entwickler dasselbe Member Center-Konto verwenden. Einer von ihnen kann kein von anderen erstelltes Zertifikat verwenden, da er eine mit seinen Computern erstellte Zertifikatanforderung verwendet hat.

Sie müssen ein von Ihnen erstelltes Zertifikat verwenden (Zertifikatanforderung, die mit Ihrem Computer erstellt wurde).

Alternativ wurde ihnen gesagt, sie sollen Ihnen das Entwicklerprofil senden. Ich bin mir des Namens nicht sicher. um ein auf einem anderen Computer erstelltes Zertifikat zu verwenden.

hasan
quelle
0

Codesignatur Berechtigungen treten auf, weil Ihre Ressource keine Berechtigungsdatei in Ressourcen enthält. Gehen Sie einfach zur Build-Einstellung und suchen Sie nach der Codesignatur. Berechtigungen löschen den Eintrag zum Debuggen und Freigeben. Erstellen Sie das Projekt erneut. Sie werden feststellen, dass kein Fehler vorliegt. Prost

Shauket Sheikh
quelle
-1

Ich hatte das gleiche Problem, aber nichts, was hier geschrieben wurde, hat für mich funktioniert. Ich fand jedoch einen einfachen Weg, der für mich funktionierte. So geht's:

1) Wählen Sie in den Build-Einstellungen Ihres Projekts und Ihrer Ziele "Keine" für alle Bereitstellungsprofile und "Keine Codesignatur" für alle Codesignaturidentitäten.

2) Wählen Sie nun Ihr Ziel und gehen Sie zum Erstellen von Einstellungen. Wählen Sie in der Einstellung "Code Signing Identity Release" die Option "iOS Distribution" für "Any iOS SDK". Wählen Sie dann in der Einstellung Provisioning Profile Release Ihr Distributionsprofil für "Any iOS SDK" aus. Danach sollte sich Ihre Einstellung für die Freigabe der Codesignatur automatisch in "iPhone Distribution" ändern.

3) Archivieren Sie Ihren Build und validieren Sie ihn. Jetzt sollte es gut funktionieren. Das ist es!

jimpavloff
quelle