Die ausführbare Datei wurde mit ungültigen Berechtigungen signiert


70

Ich habe ein Problem mit der Ad-hoc-Verteilung auf meinem iPhone. Ich habe eine Anwendung mit SDK 3.0 entwickelt. Ich habe eine Entwicklerlizenz. Ich habe meinem Projekt Zertifikate und Bereitstellungsprofile hinzugefügt. Also kein Problem damit.

Wenn ich jedoch versuche, die App auf meinem iPhone zu installieren, wird das Projekt kompiliert und der Fehler angezeigt: "The executable was signed with invalid entitlements"im Organizer-Fenster. Vermisse ich etwas Ich habe mein iPhone von 2.2.1 aktualisiert und das neueste SDK von Apple heruntergeladen.

Bitte helfen Sie mir bei diesem Problem.

Antworten:


52

Es gibt ziemlich gute Anweisungen im 'Portal-Programm'. Wenn Sie sich anmelden

http://developer.apple.com/iphone

Klicken Sie dann links auf Verteilung und dann auf

Erstellen und Herunterladen eines Verteilungsbereitstellungsprofils für die Ad-hoc-Verteilung

Link unten.

Hier ist das Schlüsselstück:

Führen Sie für die Ad-hoc-Verteilung die folgenden Schritte aus:

  • Wählen Sie im Menü Datei die Option Neue Datei -> iPhone OS -> Codesignatur -> Berechtigungen. Benennen Sie die Datei "Entitlements.plist" und klicken Sie auf "Fertig stellen". Dadurch wird eine Kopie der Standardberechtigungsdatei innerhalb des Projekts erstellt.
  • Wählen Sie die neue Datei Entitlments.plist aus und deaktivieren Sie die Eigenschaft "get-task-allow". Speichern Sie die Datei Entitlements.plist. (In Xcode 4 heißt get-task-allow "Kann debuggt werden")
  • Wählen Sie das Ziel aus und öffnen Sie den Inspektor für Build-Einstellungen. Geben Sie in der Build-Einstellung 'Code Signing Entitlements' den Dateinamen der neuen Datei Entitlements.plist einschließlich der Erweiterung ein. Es ist nicht erforderlich, einen Pfad anzugeben, es sei denn, Sie haben die Datei Entitlements.plist an einer anderen Stelle als auf der obersten Ebene des Projekts abgelegt.
  • Klicken Sie auf "Erstellen". (Hinweis: Ihre Binärdatei muss ein abgeflachtes quadratisches Bildsymbol mit einer Größe von 57 x 57 Pixel enthalten. Dieses Symbol wird auf dem Startbildschirm des iPhone oder iPod touch angezeigt.)

1
Ich wollte nur das Gleiche schreiben, es ist leicht zu vergessen, dass Sie zusätzlich zu den Store-Builds die Get-Tak-Erlaubnis für Ad-hoc benötigen!
Kendall Helmstetter Gelner

Dies hat bei mir nicht funktioniert - es führte zu demselben Fehler "Ungültige Berechtigungen". Aber basierend auf einigen Kommentaren unten habe ich alles gelöscht und dann "get-task-allow" überprüft (nicht deaktiviert) und es erneut versucht - diesmal hat es funktioniert.
Joe Strout

Ich hatte das gleiche Problem mit einem alten Projekt, das ich von git-hub aktualisiert habe, und das Überprüfen dieser Eigenschaft (wenn ich mich erinnere, dass sie zuvor nicht festgelegt war) schien auch mein Problem zu beheben. Seltsam.
TimM

2
Wow, das hat mir gerade 12 Stunden Headbangen erspart. Vielen Dank.
JayCrossler

3
Vielen Dank dafür, überraschend, dass dieses Zeug auf Apples Website so schwer zu finden ist. Es scheint, dass SO eine bessere Ressource ist.
KevinDTimm

34

Dieser Fehler kann auch auftreten, wenn Sie versuchen, eine App zu profilieren, bei der das Gerät nicht im Bereitstellungsprofil enthalten ist.

Stellen Sie sicher, dass Ihr Gerät in dem Dev-Bereitstellungsprofil enthalten ist, das Sie verwenden möchten. Irgendwie ist die Fehlermeldung irreführend. Meine Ansprüche waren eigentlich in Ordnung.


14

Ich habe festgestellt, dass "get-task-allow" für Entwicklungs-Builds überprüft werden muss, für Distribution-Builds jedoch deaktiviert ist. Der einfachste Weg, dies zu erreichen (AFAIK), besteht darin, zwei Berechtigungsdateien in Ihrem Projekt zu haben: Entitlements.plist und EntitlementsDebug.plist - und in den Build-Projekteinstellungen für die verschiedenen Konfigurationen in Ihrem Projekt auf die richtige zu verweisen.


10
Ich habe das nie tun müssen. Stellen Sie für Ihre Entwicklungs-Build-Konfiguration einfach sicher, dass die Codesignaturberechtigungen leer sind.
Ben Scheirman

2
get-task-allow ungeprüft hat bei mir funktioniert ... was für ein hinterhältiger kleiner Bastard
WrightsCS

Auch ich musste get-task-allow überprüfen, um eine Entwicklung auf meinem Gerät zu erstellen.
Memmons


5

Wenn Sie einmal in die Situation geraten sind, scheint die Überprüfung "get-task-allow" erforderlich zu sein, um Ihren Debug (!) Build auf Ihrem Telefon bereitzustellen. Überprüfen Sie Folgendes:

a) Überprüfen Sie die Build-Einstellung. Es sollte keinen Eintrag in "Code Signing Entitlements" für Debug geben. B) Entfernen Sie Entitlements.plist vorübergehend und erstellen Sie Ihre Debug-Version. Wenn es sich über eine fehlende Entitlements.plist beschwert, dann haben Sie wahrscheinlich die gleiche Situation, ich musste heute kämpfen. c) Erstellen Sie erneut mit Entitlements.plist und aktivieren Sie "get-task-allow". Wenn es jetzt funktioniert, haben Sie wahrscheinlich das gleiche Problem:

Nachdem ich mit neuen Profilen herumgespielt hatte, konnte ich meinen Debug-Build nicht auf dem Telefon bereitstellen. AdHoc war in Ordnung. Ich habe a) - leer geprüft .. Hmm. Ich habe b) überprüft - beschwert sich. c) - gearbeitet ...

Immerhin habe ich project.pbjproj in einem Editor untersucht und - obwohl die GUI behauptete, dass es keinen Eintrag für "Code Signing Entitlements" gab, gab es tatsächlich einen im Abschnitt Debug. Ich habe es geleert und war fertig.


Das hat bei mir funktioniert. Nachdem ich eine Entitlements.plist für AdHoc hinzugefügt hatte, kopierte xcode diese Anforderung in meine Debug- und Release-Ziele (obwohl ich diese nicht auf der Registerkarte Build eingegeben habe). Nach dem manuellen Entfernen aus der pbxproj-Datei funktioniert der Debug-Build wieder.
Stoß


2

Ich hatte gerade aufregende drei Stunden damit zu kämpfen. Ich habe gerade ein Projekt auf 4.2 aktualisiert und aus irgendeinem Grund würde es einfach nicht funktionieren.

Ich habe schließlich die Datei Entitlements.plist entfernt und dann eine neue erstellt.

Datei> Neue Datei> Codesignatur> Berechtigung

Nennen Sie die Datei Entitlements.plist

Stellen Sie sicher, dass es sich in xCode in der Gruppe Ressourcen befindet.

Der Typ get-task-allow BOOL wurde nicht in die Datei Entitlements.plist eingefügt. Ich habe es hinzugefügt, überprüft, gespeichert, deaktiviert, gespeichert. Dadurch fühlte ich mich besser.

Ich habe dann die von mir erstellten Adhoc- und Release-Profile entfernt. Laden Sie sie erneut vom Bereitstellungsportal herunter und legen Sie sie wieder im xCode-Organizer ab.

Ich ging dann in die Build-Einstellungen und stellte sicher, dass den Debug- und Release-Profilen die richtigen Profile zugewiesen wurden.

Ich habe dann das auf Release / Device geändert. Drücke den Build-Button und es hat funktioniert.

Ich habe keine Idee warum.


1

Johns Antwort ist zu 99% richtig. Ich habe festgestellt, dass Sie (zumindest in meiner Konfiguration) den Inspektor für Build-Einstellungen für das PROJEKT öffnen müssen . Die Build-Einstellungen für das Ziel enthalten keine "Codesignatur-Berechtigungen". Vielleicht macht dies keinen Unterschied, wenn Sie nur ein Ziel in Ihrem Projekt haben. Wenn Sie jedoch mehrere Ziele haben, müssen Sie zu den Einstellungen für die Projekterstellung gehen. Nachdem ich das getan hatte, was John gesagt hatte, funktionierte mein Ad-hoc-Distributions-Build auf jeden Fall perfekt.


1
Das ist seltsam, weil ich unter den Zieleinstellungen in XCode 3.1 Codesignaturberechtigungen habe.
Simon Woodside

Codesignaturberechtigungen werden angezeigt, wenn Sie das Basis-SDK-iPhone-Gerät nicht als Simulator im Ziel festlegen.
Steve Weller

1

Gehen Sie in Xcode 5.1 zu Einstellungen -> Konten -> Details anzeigen ...

Stellen Sie sicher, dass der Status der Signaturidentität gültig ist. Wenn "Widerrufen" angezeigt wird, klicken Sie auf die Schaltfläche "Plus" und fügen Sie die entsprechende Signaturidentität hinzu: iOS-Entwicklung oder iOS-Verteilung. Xcode ersetzt es durch ein neues, gültiges.


1

Für mich hat das das Problem gelöst: https://coderwall.com/p/-ckobg

  1. Öffnen Sie Project.xcodeproj> project.pbxproj
  2. Entfernen Sie alle Zeilen wie folgt:
    1. PROVISIONING_PROFILE = ...
    2. "PROVISIONING_PROFILE[sdk=iphoneos*]" = ...
    3. CODE_SIGN_IDENTITY = ...
    4. "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ...
  3. Legen Sie erneut Bereitstellungsprofile und Codesignaturen für das Ziel fest

Dies löste mein Problem. Es war speziell die Linie CODE_SIGN_IDENTITY = ..., die das Problem verursachte. Ich habe keine Ahnung, wann dies von Xcode hinzugefügt wurde oder ob ich es versehentlich selbst getan habe, aber was für ein Durcheinander. Im Vergleich zu anderen IDEs hatte ich so viele seltsame Probleme mit Xcode. Ich versuche es zu vermeiden und halte mich an AppCode.
Tobiaswk

0

pJosh, das könnte zum Verständnis beitragen. In meinem Fall lief mein Team-Bereitstellungsprofil ab (das Bereitstellungsportal gab an, dass es von XCode verwaltet wird) sowie das Gerätetestprofil für die App. (Ich weiß immer noch nicht warum, aber das Portal hatte eine Schaltfläche "Erneuern" neben dem Teamprofil, aber es würde nichts bewirken, wenn ich darauf klickte.)

Also habe ich die Profile gelöscht, die bald ablaufen, und dann in XCode zu Organizer (Command-Shift-2) unter Bibliothek / Bereitstellungsprofile gegangen. Ich habe die abgelaufenen Profile gelöscht. Klicken Sie dann unten auf "Aktualisieren", geben Sie meine Apple ID ein und die ablaufenden werden erneuert.

Schließlich ging ich auf meinem Ziel zu Build-Einstellungen, Codesignatur und stellte sicher, dass das Bereitstellungsprofil ausgewählt wurde. Voila, jetzt baut es auf meinem Gerät.


0

Ich habe gerade den gleichen Fehlercode erhalten. Es scheint, dass es verschiedene Dinge gibt, die dies verursachen, und daher verschiedene Möglichkeiten, dies zu beheben.

In meinem Fall hatte ich zwei verschiedene Geräte mit demselben Namen (ein iPhone 4 und ein iPhone 4S). Das Ändern des Namens eines von ihnen hat diesen Fehler für mich vollständig behoben ...


0

Ich habe versucht, meiner vorhandenen App iCloud-Unterstützung hinzuzufügen, habe jedoch festgestellt, dass meine App nach dem Hinzufügen von Berechtigungen und dem Konfigurieren von iCloud nicht mehr debuggt.

Ich stellte fest, dass mein generisches iOS-Entwicklungszertifikat eine andere APPID hatte als die App, an der ich arbeitete. Um dies zu beheben, habe ich anstelle meines generischen Zertifikats ein spezielles Entwicklungszertifikat für diese APPID erstellt.

Ich habe mein Bereitstellungsprofil in XCode aktualisiert, die App bereinigt, mein Gerät getrennt, XCOde und das angeschlossene Gerät neu gestartet und ausgeführt, und jetzt funktioniert es ein Vergnügen!


0

Ich habe auch mehrere Stunden damit verbracht, damit zu kämpfen. Das Update ist ganz einfach. Bearbeiten Sie Ihre Datei Entitlements.plist im Stammverzeichnis Ihres Projektverzeichnisses. Suchen Sie die Zeile mit der Aufschrift <key>get-task-allow</key>. Darunter sollte es sein <false/>. Ändern Sie das in <true/>.


0

Es tut mir leid, dass dies sehr spät ist, aber ich habe mir gerade diese Frage angesehen und etwas gefunden, das für mich funktioniert hat. Ich ging zu PROJEKT-> Build-Einstellungen und fand den Abschnitt Codesignatur. Neben dem Debuggen wurde mein Distributionsprofil Iphone Distribution: MY NAMEausgewählt. Ich habe stattdessen Iphone Developer: MY NAMEin der Dropdown-Liste IpodProfile (for bundle identifiers com.myName.myAppdas Bereitstellungsprofil für mein Gerät ausgewählt. Hoffe das hilft!


0

Ich habe dies gerade einem Entwickler in dem Team passiert, das ich verwalte.

Es stellte sich heraus, dass sein Entwicklerzertifikat abgelaufen war, und nach der Erneuerung habe ich es versäumt, sein Zertifikat dem von seiner App verwendeten Bereitstellungsprofil hinzuzufügen. Geben Sie hier die Bildbeschreibung ein


0

Ich hatte der neuen aktualisierten Lizenzvereinbarung von Apple nicht zugestimmt.

Kurz: Bitte melden Sie sich bei Ihrem Entwicklerkonto an -> Profil -> Überprüfung -> lesen Sie die Vereinbarung oder lassen Sie sie von Ihrem Anwalt lesen -> stimmen Sie zu (nach eigenem Ermessen) -> und klicken Sie erneut auf Profil, um den Status Ihres Profils zu überprüfen .

In meinem Szenario wurde die gültige Codesignatur nicht angezeigt. Als ich das obige Verfahren befolgte, war es sichtbar und ich konnte die App auf dem Gerät ausführen und / oder die iPA-Datei ohne große Schwierigkeiten erstellen.


0

Trat dieses Problem auf, wenn alles korrekt eingerichtet zu sein schien, zeigten die Build-Einstellungen auf das richtige Bereitstellungsprofil, die Codesignatur wurde ordnungsgemäß eingerichtet usw.

Das Problem trat auf, weil ich gerade ein neues Schema erstellt und meine CocoaPods für die neuen Konfigurationen nicht neu generiert hatte . Wie Sie auf dem Bild sehen können, zeigt die neue Ad-hoc-Konfiguration auf die Pods.productionKonfiguration anstatt auf eine Pods.ad-hocKonfiguration (bzw. einen Test).

Demonstration einer Nichtübereinstimmung von Ad-hoc-Konfiguration und Schema-Konfiguration

Reparieren:

  • Setzen Sie die Nonefehlerhafte Konfiguration auf - Cocoapods würden die Konfigurationen nur generieren, wenn ich dies getan hätte
  • Schließen Sie XCode
  • Lauf pod install
  • Öffnen Sie XCode erneut und stellen Sie die Konfigurationen des neuen Schemas auf die neu generierten Konfigurationen ein.

Das ist es!


-1

Überprüfen Sie, ob Ihr Gerät im Bereitstellungsprofil enthalten ist.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.