wake-up-neo.com

Xcode 5: Berechtigungsfehler der Codesignatur

Ich habe eine neue Anwendung erstellt, die IOS 7 unterstützen wird. Ich habe den neuen XCode 5 GM erhalten und versucht, meine Apps mithilfe meines neuen Provisioning-Profils und meines Verteilungszertifikats zu signieren Probleme mit der Verteilung. Ich erhalte ständig folgende Fehlermeldung:

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

Auch derselbe Fehler für einen Schlüsselwert namens application-identifier.

Screenshot des Fehlers: 

enter image description here

148
Benjamin de Bos

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

enter image description here

208
Benjamin de Bos

Wenn Sie wie ich sind und Sie glauben, Sie hättenALLESprobiert, Ihr Projekt über zehn Mal archiviert, Ihren Kopf auf die Tastatur geknallt und trotzdem diese Fehlermeldung angezeigt. Bitte tun Sie sich selbst einen Gefallen und Restart XCode , es hat bei mir funktioniert. Irgendwann Apple ... ich hasse dich. 

53
VGruenhagen

Ich habe viele der oben genannten Schritte durchlaufen, aber was schließlich für mich funktioniert hat, ist die Aktualisierung meiner Profile in Xcode. Nicht sicher, warum dies erforderlich war, da das Verteilungsprofil 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 aus
  4. Klicken Sie auf die Schaltfläche Details anzeigen im Detailfenster von Apple ID
  5. Klicken Sie auf die Schaltfläche Aktualisieren in der unteren linken Ecke
25
Joe Regan

In meinem Fall habe ich in Xcode die gleichen Funktionen wie in Application Services in developer.Apple.com aktiviert. Das funktioniert für mich

enter image description here

enter image description here

12
novecapa

In meinem Fall (sorry) habe ich unter -> Allgemein -> Identität "Team" 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.

Es scheint, als sei Xcode mit der Codesignierung ziemlich durcheinander geraten. Oder wir Sterblichen sind einfach nicht klug genug, um zu verstehen, was sie tun. Geben Sie nicht auf, wir werden alle manchmal einer Code-Signatur unterzogen!

6
RickJansen

In meinem Fall musste ich das korrekte 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 Wunder bewirken. Vielleicht hilft das jemandem.

5
Beny Boariu

1.Gehen Sie zum Projektordner, löschen Sie * .entitlements-Dateien. 2. Dann gehen Sie in xcode-Projektziel -> Build-Einstellungen -> Code-Signaturberechtigungen - Werte löschen3.Clean4.Run

3
Vlad 25 WLD

Ah, dieser herrliche Irrtum. Immer wenn ich diesen Fehler sehe, überprüfe ich Folgendes:

1. Erlauben Sie XCode, ständig auf Ihre Informationen zum Bereitstellungsprofil zuzugreifen - Wenn XCode beim Starten des Computers nachfragt, ob Sie Zugriff auf die privaten Dateien Ihres Computers haben, kann er Informationen über das Bereitstellungsprofil mit den Optionen erhalten, mit denen der Zugriff immer möglich ist , nicht jetzt oder nur einmal - setzen Sie den Zugriff auf IMMER ERLAUBEN

2. Wenn sich alte Berechtigungsdateien um Ihr Projekt herum befinden, entfernen Sie sie und alle Anzeichen. Wenn Sie eine .entitlements-Datei in Ihrem Projekt sehen, löschen Sie sie (oder zumindest den Verweis darauf, falls Sie dies tun) sind Sie nicht sicher, ob Sie bereit sind, das Objekt vollständig zu löschen), und stellen Sie sicher, dass die Zeile "Code Signing Entitlements" im Abschnitt "Code Signing" in den Build-Einstellungen leer ist

3. Überprüfen Sie Ihre Application Services online und vergleichen Sie sie mit Ihren Services in XCode für die App. Gehen Sie zum Apple Member Center, überprüfen Sie die App-ID für Ihre App und klicken Sie auf die App, um die zugehörigen 'Application Services' anzuzeigen. Und sehen Sie, was Sie überprüft haben. Wechseln Sie dann zu XCode und überprüfen Sie den Abschnitt "Capabilities", um sicherzustellen, dass die beiden auf beiden die gleiche Liste der Apple-Dienste haben

4. Vergewissern Sie sich, dass Sie Ihrer App ein gültiges Provisioning-Profil zugewiesen haben, bevor Sie validieren. Überprüfen Sie Ihr Provisioning-Profil für Ihre App im Apple Member Center. Vergewissern Sie sich, dass es nicht abgelaufen ist Bündel-ID und Verteilung. Laden Sie das neue Bereitstellungsprofil herunter, und klicken Sie darauf, um sicherzustellen, dass es in XCode vorhanden ist. Oder gehen Sie zu XCode> Einstellungen> Konten. Klicken Sie auf Ihr Konto und 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 "Code Signing" verfügbar sein. Wenn Sie über das richtige Bereitstellungsprofil verfügen, können Sie die Zeile "Code Signing Identity" auf die richtige Option für dieses Bereitstellungsprofil setzen.

Hinweis - Wenn Sie ein Verteilungszertifikat verwenden, 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 - Reinigen Sie Ihr Projekt und starten Sie XCode neu. Möglicherweise funktioniert Apple-Magie beim nächsten Öffnen Ihres Projekts und beim Versuch, es zu bestätigen,.

3
ColossalChris

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 Zurücksetzen wurde dieses Problem behoben.enter image description here

Wahrscheinlich fügt diese Aktion der Game Center-Berechtigung die App-ID hinzu und behandelt sie selbst.

3
beryllium

Mein Problem wurde gelöst, indem ich meine Apple-ID aus Einstellungen-> Konten entfernte und sie dann wieder hinzufügte. Alle meine Bereitstellungsprofildateien wurden dann im Dienstprogramm Details anzeigen angezeigt. Ich habe mich versehentlich für "Mac Team Provisioning Profile: *" entschieden, anstelle des tatsächlichen Provisioning-Provisioning-Profils für das Projekt, das meiner Meinung nach eine generische Auswahl war. Bereitstellungsdateien müssen projektspezifisch sein. Übrigens, stellen Sie sicher, dass Ihr Provisioning-Profil über die richtigen Berechtigungen verfügt (z. B. Maps). Ich habe es geschafft, eine App mit OSX Maps ohne die Berechtigung zu veröffentlichen, die von Apple genehmigt wurde. In der Produktionsversion wurde jedoch keine Karte angezeigt.

2
Brainware

Wenn Sie ein altes 3.1.5-Projekt erstellen, weist Xcode 5 einige Fehler auf, die die Antwort von Benjamin leider unmöglich machen, da keine Provisioning-Profile zur Auswahl stehen. Nach einer langen Stunde des quälenden Lesens von Xcode-Projektdateien kam mir 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 den Namen Ihrer Organisation 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 PBXNativeTarget und eine in PBXProjectXCConfigurationLists).

Jetzt können Sie das App Store erneut öffnen, archivieren und einreichen - voilà! Es funktioniert wieder

Wie ich denke, dass es funktioniert

Ich gehe davon aus, dass dies funktioniert, weil Apple sich irgendwo auf der ganzen Linie dazu entschlossen hat, keine separate Distributionskonfiguration zu benötigen, was eine gute Sache ist. Wenn ich archiviere, codiert Xcode automatisch Zeichen für die Verteilung. So sollte es eigentlich schon implementiert sein, es ist nur eine Schande, dass Apple die automatische Migration nicht zu einem Bestandteil der IDE machen kann. Stattdessen zwingen sie uns Entwickler, Jahrzehnte damit zu verbringen, dass dieses Zeug funktioniert.

2
Jonas Byström

Ich kämpfe seit über einem Tag mit diesem Problem und probiere alle hier und anderswo vorgeschlagenen Lösungen aus. 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 angerührt habe, und nun war ich dabei, ein lang erwartetes Update zu veröffentlichen. Seit der Veröffentlichung der App hat Apple die Funktionsweise der Zertifikate und der App-ID aktualisiert. Sie haben das Konzept der Team-ID eingeführt, das anscheinend für die Verwendung von .. empfohlen wird .. Insbesondere die Apples-Website "Certificates, Identifiers & Profiles" hat seitdem viele Änderungen erfahren.

Dort wurde mir klar, dass das Provisioning-Profil, das ich für den App Store-Vertrieb verwendete, mit der App-ID ED8xxxxxxx.com.rostsolutions.* verbunden war. Wenn ich jedoch die App-ID für das Spiel betrachtete, das ich gerade übermitteln wollte, fiel mir auf, dass die App-ID ATMxxxxxxx.com.rostsolutions.Swisch war. Das App-ID-Präfix stimmte also nicht mit! .__ überein. Dies schien die Ursache des Problems zu sein. Also habe ich stattdessen ein neues Provisioning-Profil erstellt, das mit der App-ID ATMxxxxxxx.com.rostsolutions.Swisch verbunden ist. Mit diesem Bereitstellungsprofil habe ich meine App erfolgreich an den App Store übermittelt, und jetzt drücke ich die Daumen, dass alles andere an Apples Seite funktioniert.

(Ich habe zuerst versucht, eine Verbindung zu einem neuen Provisioning-Profil mit der Wildcard-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 anschaue und zu Binary Details gehe, dass die App-ID ED8xxxxxxx.com.rostsolutions.Swisch lautet. Warum wird auf der Seite "Zertifikate, Kennungen und Profile" die Anwendungs-ID als ATMxxxxxxx.com.rostsolutions.Swisch aufgeführt?

2
Daniel

Wenn alle oben genannten nicht funktionierten (in meinem Fall nach ein paar Tagen kein Glück, alles auszuprobieren), habe ich nur eine Mac-Anwendung. Seien Sie vorsichtig mit Revoke!

1) Alle "Mac App Distribution" und "Mac Installer Distribution" von Hand widerrufen
2) Bereinigen Sie relevante Zertifikate und Schlüssel im Schlüsselbund (Warnung: vor dem Löschen exportieren).
3) Xcode neu starten 4) Gehen Sie zu (in Safari) developer.Apple.com -> Zertifikate usw. 5) Erstellen Sie CertificateSigningRequest.certSigningRequest in Keychain-> Certificate assistant
.__) 6) Erstellen Sie mit "* .certSigningRequest" sowohl "Mac App Distribution" als auch "Mac Installer Distribution" manuell auf developer.Apple.com
7) Provisioning-Profile -> Verteilung -> Erstellen/Korrigieren einer benutzerdefinierten Provision für AppStore (Ich nenne sie speziell als "Mac Provisioning-Profil für AppStore").
8) Xcode -> Einstellungen -> Konto -> Ihr Konto -> Aktualisieren 9) Xcode Clean -> Archiv -> Bestätigen

1
WINSergey

Es gibt ein sehr gutes Tutorial, um dieses Problem auf this website zu lösen.

Dieses Problem kann auftreten, wenn der Projekt-Bundle-Bezeichner sich von dem auf der iTunes Connect-Website eingegebenen unterscheidet.

1
Lukas

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

Nachdem alle Build-Einstellungen doppelt und dreifach geprüft wurden, erstellte I das Provisioning-Profil (ohne Änderungen) erneut, und es wurde erneut heruntergeladen, und es funktionierte einwandfrei.

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

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

1
Tomek Cejner

In meinem Fall hatte ich das gleiche Problem. Meine Lösung bestand darin, das "Bereitstellungsprofil für die Freigabe" in den Build-Einstellungen zu ändern, bevor das Archiv ausgeführt wird. Ich mache das zweimal, einmal für die Verteilung im App Store und einmal für die Ad-hoc-Verteilung. Ich füge auch einen Kommentar zu meinen Archiven hinzu. Meine Schlussfolgerung ist, dass die "Archiv-Signatur" etwas kaputt macht.

1
Hector

FEHLER ITMS-9000: „Dieses Bundle ist ungültig. Neue Apps und App-Updates, die im App Store eingereicht 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.

1
hi0001234d

Ich denke, xcode 5 verwendet "release" anstelle von "distribution", die Sie selbst erstellen können.

1
superarts.org

Wenn mehrere Entwickler dasselbe Mitgliederkonto verwenden. Eine von ihnen kann ein von anderen erstelltes Zertifikat nicht verwenden, da sie eine mit ihren Computern erstellte Zertifikatsanforderung verwendet haben.

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

Alternativ können Sie das Entwicklerprofil senden. nicht sicher über den Namen ein auf einem anderen Computer erstelltes Zertifikat verwenden.

0
hasan

Codesignierung Entitlements treten auf, weil Ihre Ressource keine Entitlements-Datei in Ressourcen enthält. Gehen Sie einfach zu Build-Einstellung und suchen Sie Code-Signierung. Prost

0
Shauket Sheikh