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.

SIE
quelle

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.)
John
quelle
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.

TTT
quelle
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.

gumbypp
quelle
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.

Neil
quelle
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ß
4

Dies liegt daran, dass Ihr Gerät, auf dem Sie Ihre Anwendung ausführen, nicht mit Ihrem Bereitstellungsprofil ausgewählt ist.

Gehen Sie einfach Zertifikate, Kennungen und Profile durch , iOS Provisioning Profilesklicken Sie auf Bearbeiten und dann auf Ihr Gerät

Geben Sie hier die Bildbeschreibung ein

Rajneesh071
quelle
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.

Gerald
quelle
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.

iisystems
quelle
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.

TalkLittle
quelle
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
Robert
quelle
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.

Jay Imerman
quelle
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 ...

Andy Ibanez
quelle
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!

theDuncs
quelle
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/>.

Brian Knoblauch
quelle
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!

Samuel Noyes
quelle
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

sean808080
quelle
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.

iCodeAtApple
quelle
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!

Gavin Miller
quelle
-1

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

Steve Ham
quelle