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:
quelle
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.
quelle
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:
quelle
In meinem Fall habe ich in Xcode dieselben Funktionen aktiviert wie in den Anwendungsdiensten in developer.apple.com. Das funktioniert bei mir
quelle
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!
quelle
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.
quelle
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.
Höchstwahrscheinlich fügt diese Aktion die Game Center-Berechtigung zur App-ID hinzu und behandelt sie selbst.
quelle
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
quelle
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
quelle
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:
open -a TextEdit path/to/name.xcodeproj/project.pbxproj
isa=XCBuildConfiguration
).PBXNativeTarget
und eine inPBXProject
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.
quelle
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 warATMxxxxxxx.com.rostsolutions.Swisch
. Das App ID-Präfix stimmte also nicht überein! Das schien die Wurzel des Problems zu sein. Ich habe alsoATMxxxxxxx.com.rostsolutions.Swisch
stattdessen 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ührtATMxxxxxxx.com.rostsolutions.Swisch
?quelle
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!
quelle
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.
quelle
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 .
quelle
Ich denke, xcode 5 verwendet "release" anstelle von "Distribution", die Sie möglicherweise selbst erstellt haben.
quelle
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
quelle
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.
quelle
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.
quelle
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.
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.
quelle
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
quelle
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!
quelle