FEHLER ITMS-90164/90046: Ungültige Codesignaturberechtigungen

82

Hinweis: Ich entwickle mit Xamarin. Ähnliche Frage im Xamarin Forum hier gepostet

Ich erstelle eine App namens " CompanyApp" . Dann habe ich eine App-ID für com.Company.CompanyApp erstellt , zusammen mit dem Distribution Provisioning Profile, das die entsprechende App-ID verwendet. Ich habe die Binärdatei hochgeladen und sie hat einwandfrei funktioniert.

Dann erstellte ich eine Demoversion der App (im Grunde dieselbe App mit kleinen Änderungen, es handelt sich also um dieselbe Lösung und dasselbe Projekt, nur unterschiedliche Einstellungen für die Bundle-Signatur), CompanyAppDemo mit einer neuen App-ID com.Company.CompanyAppDemo , zusammen mit einer neues Distributionsbereitstellungsprofil, das die neue App-ID verwendet. Ich habe die iOS Bundle Signing-Optionen aktualisiert, um das neue Bereitstellungsprofil zu verwenden, und die IPA generiert. Beim Hochladen auf Application Loader wurde jedoch der folgende Fehler angezeigt:

[2015-01-23 16:08:21 SGT] FEHLER: FEHLER ITMS-90164: "Ungültige Codesignaturberechtigungen. Die Berechtigungen in Ihrer App-Bundle-Signatur stimmen nicht mit denen überein, die im Bereitstellungsprofil enthalten sind. Gemäß der Bereitstellung Profil enthält das Bundle einen Schlüsselwert, der nicht zulässig ist: 'TEAMID.com.Company.CompanyApp' für den Schlüssel 'Anwendungskennung' in 'Payload / CompanyApp.app / CompanyApp' "

[2015-01-23 16:08:21 SGT] FEHLER: FEHLER ITMS-90046: "Ungültige Codesignaturberechtigungen. Die Signatur Ihres Anwendungspakets enthält Codesignaturberechtigungen, die unter iOS nicht unterstützt werden. Insbesondere den Wert" TEAMID.com.Company " .CompanyApp 'für Schlüssel' Anwendungs-ID 'in' Payload / CompanyApp.app / CompanyApp 'wird nicht unterstützt. Dieser Wert sollte eine Zeichenfolge sein, die mit Ihrer TEAMID beginnt, gefolgt von einem Punkt'. ', Gefolgt von der Bundle-ID. "

Ich habe tagelang debuggt, um es ohne Erfolg herauszufinden.

Ich frage mich, warum der Fehler, den Application Loader beim Signieren mit dem neuen Profil verursacht hat, auf die ID der ursprünglichen TEAMID.com.Company.CompanyApp anstelle von TEAMID.com.Company.CompanyAppDemo verweist . Ist dies ein Fehler in Xamarin, der ein falsches Bereitstellungsprofil erkennt, oder fehlt mir etwas? Sie benötigen kein anderes Zertifikat für eine andere App, oder?

Beachten Sie, dass ich die Liste der Bereitstellungsprofile in XCode> Einstellungen immer aktualisiert habe, bevor ich die Option iOS Build Signing in Xamarin geändert habe.

yonasstephen
quelle

Antworten:

133

Wenn jemand wie ich nach ERROR ITMS-90046 sucht, besteht meine Lösung darin, es zu bereinigen, alle vorkompilierten Frameworks (die benutzerdefinierten) zu löschen und dann erneut zu erstellen.

Hinweis: In der Fehlerbeschreibung wurde etwas über den Schlüssel "aps-environment" als "Entwicklung" angegeben.

Bearbeiten: Die eigentliche Fehlermeldung

Quarac
quelle
Kannst du das etwas näher erläutern?
John
1
Ja, in meiner App verwende ich benutzerdefinierte Frameworks. Diese werden im Abschnitt "Erstellungsphasen" "Zielabhängigkeiten" hinzugefügt. Wenn ich die App kompiliere, werden sie kompiliert und auch signiert. Außerdem habe ich in jedem Framework "Build-Phasen" ein Skript, das das kompilierte Framework in einen anderen Ordner verschiebt. Es scheint einen Fehler beim Signierprozess zu geben, und ich denke, der Hauptteil war das Löschen der Frameworks, wodurch der Compiler gezwungen wurde, sie erneut zu kompilieren und zu signieren. Dieser Fehler tritt nie wieder auf.
Quarac
Danke, das hat mir geholfen, mein Problem zu beheben!
DiscDev
7
Alles was ich tun musste war das Clean ... Dies war ein neuer Fehler nach ungefähr 50 Builds, die am
28.
2
Die Entwicklung auf Xcode ist ein endloser Albtraum. Anscheinend ist es wichtiger, zur Arbeit zu beten als zu programmieren.
Eduardo
63

Ich hatte das gleiche Problem und löste es mit einem einfachen Produkt -> Reinigen .

David P.
quelle
1
Dank hat für mich gearbeitet, um FEHLER ITMS-90164 zu lösen: "Ungültige Codesignaturberechtigungen. Die Berechtigungen in Ihrer App-Bundle-Signatur stimmen nicht mit denen überein, die im Bereitstellungsprofil enthalten sind. Entsprechend dem Bereitstellungsprofil enthält das Bundle einen Schlüsselwert, der ist nicht zulässig: 'true' für den Schlüssel 'get-task-allow' in 'Payload / Palau Moja.app/Palau Moja' stimmen mit denen überein, die im Bereitstellungsprofil enthalten sind.
Josep Escobar
Hatte den gleichen Fehler wie Josep und bereinige -> archiviere -> lade ihn wieder hoch, löse ihn. Vielen Dank für die Veröffentlichung dieser Lösung!
kleine
Wo machen Sie Produkt-> Reinigen ? In XCode oder Visual Studio? Ich entwickle mit Xamarin, übrigens.
James Lavery
20

Wenn jemand hierher kommt, indem er sowohl nach dem Fehler ITMS-90164 als auch nach dem Fehler ITMS-90046 mit den Schlüsseln get-task-allow und asp-environment sucht :

1

Wie David P sagte, löste ein Produkt -> Reinigen, bevor ein neues Archiv mein Problem löste.

Ich möchte nur hinzufügen, dass ich in meinem Fall festgestellt habe, dass dem fehlerhaften Xarchiv die folgende Datei fehlte:

2

Bevor Sie dieses .xarchive zur Produktionssignatur an Ihren Client senden, sollten Sie nach der Datei archived-expand-berechtigungen.xcent suchen und sicherstellen, dass sie vorhanden ist.

Bluezen
quelle
18

Endlich nach 2 Wochen Haarziehen ..

Aus bestimmten Gründen verwendet Xamarin die ursprüngliche Anwendungskennung, dh TEAMID.com.Company.CompanyApp , wenn in der Entitlements.plist keine Schlüssel-Anwendungskennung vorhanden ist, die auf TEAMID.com.Company.CompanyAppDemo festgelegt ist

Die Lösung bestand also darin, eine Anwendungskennung hinzuzufügen, die die richtige Anwendungspaket-ID in Entitlements.plist angibt. Fügen Sie dann die Liste in die Build-Optionen> iOS-Bundle-Signierung ein.

yonasstephen
quelle
13
Xamarin ist so ein Produktivitätsschub!
Anton Tropashko
8

Gleiches Problem und gelöst mit einem einfachen Produkt -> Reinigen .

Adrien Brecheteau
quelle
8

Ändern Sie dies in Entitlements.plist:

<key>aps-environment</key>
<string>development</string>

Dazu:

<key>aps-environment</key>
<string>production</string>
KalleP
quelle
5

Dies kann auch dadurch verursacht werden, dass Sie einem neuen Vertrag in iTunes Connect zustimmen müssen. Melden Sie sich bei iTunes Connect an und Sie sollten oben ein Banner sehen, das Sie auffordert, der letzten Vertragsänderung zuzustimmen.

RickiG
quelle
1
Du bist ein Lebensretter :) Ich muss die nicht verwandten Fehlermeldungen von Apple lieben
Yoav Schwartz
4

Für mich war das Problem eine Entitlements.plist, die automatisch hinzugefügt wurde und leer war. Es wurde aus dem Feld Benutzerdefinierte Berechtigungen entfernt und das Problem behoben.

Ansicht der iOS-Bundle-Signierung in Visual Studio 2015

Cássio
quelle
3

Wenn Sie vor dem Packen nicht das entsprechende Freigabezertifikat auswählen, wird ERROR ITMS-90164 gemeldet

Build-Einstellung -> Code-Signatur-Identität -> Release -> Beliebiges IOS-SDK

user5938649
quelle
2

Stellen Sie sicher, dass Sie bei der Archivierung das App-Ziel und nicht die WatchKit-App ausgewählt haben.

Ric Santos
quelle
2

Keine der anderen Antworten löste diesen Fehler für mich, aber dies tat:

  1. Erstellen Sie eine neue XCode-Anwendung und überprüfen Sie die Einstellungen für die Codesignatur.

  2. Versuchen Sie, Ihre App so einzustellen, dass sie den Standardeinstellungen für das Signieren und Bereitstellen von XCode 7 oder Xcode 8 entspricht. XCode 7 wird hier angezeigt und in XCode 8 erneut geändert.

Bereitstellung und Unterzeichnung

  1. Wenn dies nicht ausreicht, müssen Sie es möglicherweise erneut ausführen. Löschen Sie diesmal jedoch alle alten abgelaufenen Bereitstellungsprofile von Ihrem Apple-Schlüsselbund oder löschen Sie sie und melden Sie sich im XCode erneut bei Ihrem Apple-Entwicklerkonto (iTunes) an Vorlieben. Stellen Sie sicher, dass Sie XCODE beenden und neu starten, nachdem Sie Änderungen vorgenommen haben. Fügen Sie dann Ihr Konto erneut hinzu und lassen Sie XCode Ihre neuen Signatur- und Teaminformationen abrufen.
Warren P.
quelle
1

Ich hatte versucht, einen Build von einem Git-Zweig hochzuladen, der nicht der Master war. Um das Problem zu beheben, habe ich den Zweig mit dem Master zusammengeführt und erneut erstellt. Ich konnte den Build dann erfolgreich hochladen.

Kurt Anderson
quelle
1

Ein Projekt mit 2 Zielen (mit 2 Entwickler-ID, 2 Berechtigungen) kann dazu führen. (Frag mich nicht, wie es passiert ist ...)

Entfernen Sie bei der Archivierung vorübergehend eine andere Berechtigungsdatei.

hstdt
quelle
1

Einen richtigen Xcode 'Beenden' und dann einen Neustart durchzuführen war die letzte Aktion, die es für mich zum Laufen gebracht hat.

Ich hatte die Bundle-ID (für eine Demoversion) geändert und beim Überprüfen meines archivierten Builds den gleichen Fehler (wie in der Frage beschrieben) erhalten. Ich benutze Xcode. Nur Xcode zu schließen und mein Projekt erneut zu öffnen, war nicht genug, aber ein vollständiges "Beenden" war. Ich vermute, irgendwo wurde etwas zwischengespeichert.

Marcus
quelle
Das hat es für mich getan. XCode kann manchmal so pingelig sein.
Aaron Krauss
1

Ich habe alles versucht, was hier aufgelistet ist. Es stellte sich heraus .entitlement, dass das Problem meine Datei war, die Zeilen hatte, die ich nie zuvor eingefügt hatte. Sie wurden nur irgendwie hinzugefügt.
Entfernte diese Zeilen und versuchte es erneut, funktionierte.

Nolan.K
quelle
1

Ich habe gerade in Berechtigungen umbenannt. Listen Sie den Wert von Access-Domänen von applinks: htts: //domain.app.link in applinks: domain.app.link auf. Es funktioniert wie ein Zauber. Prost!

Sathish
quelle
0
  1. Gehe zu Build Phasein Xcode
  2. Entfernen Sie alle Frameworks
  3. Fügen Sie sie wieder hinzu
  4. Jetzt build-> Archieve-> Upload to App Store

Hurra, du bist fertig damit. Problem gelöst

Mehul Thakkar
quelle
0

Für mich konnte ich es lösen, indem ich die automatische Codesignaturfunktion ein- und wieder einschaltete:

Geben Sie hier die Bildbeschreibung ein

Dave G.
quelle
0

Für mich hatte ich die falsche Datei in meiner Einstellung für benutzerdefinierte Berechtigungen unter iOS Bundle Signing. Entfernte es und es funktionierte!

JP Hochbaum
quelle
1
Screenshot wäre schön.
Warren P
0

Nach vielen Stunden der Untersuchung fand ich eine einfache Lösung.

Anstatt den Application Loader zum Hochladen der Anwendung zu verwenden, habe ich den Organizer von XCode verwendet und er funktionierte beim Hochladen ohne Warnungen!

Sebastien Filion
quelle
0

Mein Problem ist, dass ich ein falsches Bundle zum Erstellen einer IPA-Datei verwendet habe

Netero
quelle
0

Ich hatte genau das gleiche Problem und es war ein ziemlich dummer Fehler. Ich möchte nicht, dass jemand Zeit damit verbringt, also für diesen:

Fehler

Was hier also passiert ist, war, dass ich im Bereitstellungsziel '10' eingegeben habe. Das hätte stattdessen 10.0 sein sollen. Das ist es, was den berüchtigten FEHLER ITMS-90164/90046 hervorgebracht hat: Ungültige Codesignaturansprüche für mich!

Benjamin de Bos
quelle
0

Meine zwei Cent hier.

Gerade jetzt habe ich mich an dieses Problem gehalten, weil ich beim Kopieren meiner TeamID / Anwendungs-ID aus dem Apple-Entwicklerportal eine Menge nicht verwandten Werts in die Berechtigungsliste einbringe. Ich habe dies nicht bemerkt, weil ich Xcode zum Bearbeiten der Berechtigungsliste verwendet habe und das Eingabefeld nicht alles nach dem ersten neuen Zeilenzeichen anzeigt.

Ich schlage vor, für diesen Fall den Nur-Text-Editor für die Berechtigungsliste zu verwenden.

Danke, Samuel

Samuel Leung
quelle
0

Nachdem ich alle Tricks ausprobiert habe, die ich in den letzten Tagen bei Stackoverflow gelesen habe, lösche ich die Datei "xxxxxx.entitlements" und regeneriere sie erneut. Ich klicke auf Capabilities und wähle ON unter Associated Domains und füge "Domains" hinzu. Klicken Sie dann unter Funktionen> Push-Benachrichtigungen auf Fix "Push-Benachrichtigungen zu Ihrer Berechtigungsdatei hinzufügen".

Damit kann ich ARCHIVE erfolgreich machen

Javier Amor Penas
quelle
0

Ich hatte einen Link wie diesen webcredentials:https://************.link, der dazu führte, dass mein Upload fehlschlug. Ich habe es entfernt und das Problem wurde gelöst.

Septronic
quelle