Frage

Ich versuche, eine Anwendung in den iPhone App Store hochzuladen, erhalte jedoch diese Fehlermeldung von iTunes Connect:

Die von Ihnen hochgeladene Binärdatei war ungültig.Die Signatur war ungültig oder wurde nicht mit einem Apple-Übermittlungszertifikat signiert.


Notiz:Die Details der ursprünglichen Frage wurden entfernt, da diese Seite zu einem Aufbewahrungsort für alle Informationen zu möglichen Ursachen dieser bestimmten Fehlermeldung geworden ist.

Allgemeine Informationen zum Senden von iPhone-Anwendungen an den App Store finden Sie unter Schritte zum Hochladen einer iPhone-Anwendung in den AppStore.

War es hilfreich?

Lösung

Ich habe die Erfahrung gemacht, dass Xcode gelegentlich verwirrt ist, welches Signaturzertifikat verwendet werden soll.Ich habe mir angewöhnt, Xcode nach jeder Änderung der Codesignatureinstellungen zu beenden und neu zu starten (und einen sauberen Build durchzuführen), um dieses Problem zu umgehen.

Andere Tipps

Ich wollte nur erwähnen, dass auch ich das Problem mit zip aus dem Befehl hatte Linie ebenfalls.Das Problem liegt in der Art und Weise, wie standardmäßig mit Symlinks umgegangen wird.Verwendung:

zip -y -r myapp.zip myapp.app

Das Problem wurde gelöst.

Ich hatte das gleiche Problem und habe es folgendermaßen gelöst:

Die Eigenschaftszertifikate wurden auf meinem Entwicklungscomputer installiert und mobileprovision.embedded wurde in das Verteilungsarchiv aufgenommen.Nach ungefähr einer Stunde Googeln und Stöbern fand ich die Fehlerquelle.In Xcode hatte ich die Release-Konfiguration kopiert und eine neue Distributionskonfiguration erstellt und dann die Signaturidentität in mein Distributionszertifikat geändert.Allerdings wurde die Projektdatei nicht korrekt aktualisiert, obwohl sie in der GUI aktualisiert wurde.

Wenn derselbe Fehler auftritt, suchen Sie in Ihrem Verzeichnis [Projektname].xcodeproj nach der Datei project.pbxproj und öffnen Sie sie in Ihrem bevorzugten Editor.Suchen Sie nach dem Abschnitt „Verteilung“.Mein kaputtes Exemplar sah so aus:

C384C90C0F9939FA00E76E41 /* Distribution */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
CODE_SIGN_ENTITLEMENTS = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]” = “iPhone Distribution: Edward McCreary”;
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
PREBINDING = NO;
“PROVISIONING_PROFILE[sdk=iphoneos*]” = “F00D3778-32B2-4550-9FCE-1A4090344400″;
SDKROOT = iphoneos2.2.1;
};
name = Distribution;
};
C384C90D0F9939FA00E76E41 /* Distribution */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CODE_SIGN_IDENTITY = “iPhone Developer: Edward McCreary”;
“CODE_SIGN_IDENTITY[sdk=iphoneos*]” = “iPhone Developer: Edward McCreary”;
COPY_PHASE_STRIP = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = GenPass_Prefix.pch;
INFOPLIST_FILE = Info.plist;
PRODUCT_NAME = GenPass;
PROVISIONING_PROFILE = “DB12BCA7-FE72-42CA-9C2B-612F76619788″;
“PROVISIONING_PROFILE[sdk=iphoneos*]” = “DB12BCA7-FE72-42CA-9C2B-612F76619788″;
};
name = Distribution;
};

Im zweiten Abschnitt sehen Sie, dass die Signaturidentität und das Bereitstellungsprofil falsch sind.Bearbeiten Sie es so, dass es mit dem ersten Abschnitt übereinstimmt, erstellen Sie es neu, und schon kann es losgehen.Das letzte sah so aus:

C384C90C0F9939FA00E76E41 /* Distribution */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
CODE_SIGN_ENTITLEMENTS = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]” = “iPhone Distribution: Edward McCreary”;
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
PREBINDING = NO;
“PROVISIONING_PROFILE[sdk=iphoneos*]” = “F00D3778-32B2-4550-9FCE-1A4090344400″;
SDKROOT = iphoneos2.2.1;
};
name = Distribution;
};
C384C90D0F9939FA00E76E41 /* Distribution */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CODE_SIGN_IDENTITY = “iPhone Distribution: Edward McCreary”;
“CODE_SIGN_IDENTITY[sdk=iphoneos*]” = “iPhone Distribution: Edward McCreary”;
COPY_PHASE_STRIP = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = GenPass_Prefix.pch;
INFOPLIST_FILE = Info.plist;
PRODUCT_NAME = GenPass;
PROVISIONING_PROFILE = “F00D3778-32B2-4550-9FCE-1A4090344400″;
“PROVISIONING_PROFILE[sdk=iphoneos*]” = “F00D3778-32B2-4550-9FCE-1A4090344400″;
};
name = Distribution;
};

Die Führer wurden geändert, um die Unschuldigen zu schützen

Gleiches Problem, andere Lösung.

In meinem Fall habe ich die Datei mit komprimiert zip -r myapp.zip myapp.appEs stellte sich heraus, dass der Zip-Befehl das Paket vermasselt hat.Durch Komprimieren über den Finder funktionierte es.

Ich hatte das gleiche Problem und nachdem ich mehrere Dinge ausprobiert hatte, entfernte ich die .plist-Berechtigungen aus den Code Signing-Berechtigungen (ließ es einfach leer) und es funktionierte einwandfrei und wurde ENDLICH hochgeladen.

Viel Glück euch allen :-D

Ein weiterer Datenpunkt:Für eine Weile ging meine App durch.Jetzt habe ich Unterstützung für In-App-Käufe hinzugefügt und plötzlich schlägt es mit dem Problem „Ungültige Binärdatei/ungültige Signatur“ fehl.Bei genauerem Hinsehen stellte ich fest, dass der Wert von application-identifier in der Berechtigungs-Plist-Datei falsch war.

Dies hatte höchstwahrscheinlich damit zu tun, dass ich das Bereitstellungsprofil von einem Platzhalterprofil durch ein App-spezifisches ersetzt habe (erforderlich für In-App-Käufe).Unter dem alten Profil wurde die falsche App-ID qualifiziert.Es stimmte nicht mit der App-ID in der info.plist überein, aber anscheinend hat iTunes das verziehen.

Um es noch einmal zusammenzufassen:

info.plist: com.mydomain.foo
dist.plist: com.mydomain.bar
Profile: com.mydomain.*

ist in Ordnung, während

info.plist: com.mydomain.foo
dist.plist: com.mydomain.bar
Profile: com.mydomain.foo

verursacht „Ungültige Binärdatei“.

Ich hatte das gleiche Problem auch, als ich beim Erstellen bemerkte, dass die Bereitstellung nicht im Build hinzugefügt wurde.

Die Lösung für mich bestand darin, den Build auf das iPhone-Gerät festzulegen, auf dem ich normalerweise den Simulator verwende, aber dann enthält es nicht das Bereitstellungsprofil ...

Das könnte ein Anfängerfehler sein.Normalerweise können Sie nicht auf das Gerät bauen, aber wenn Sie es für die Verteilung tun, ist dies möglich.

Nun, nachdem ich die Schritte mehrmals wiederholt hatte, gelang es mir endlich, meine App hochzuladen.

Ich weiß nicht genau, was das Problem behoben hat, aber vor dem erfolgreichen Versuch habe ich Xcode und Firefox geschlossen und neu gestartet.Ich schätze, eine dieser Apps hatte schlechtes Juju.

Hier ist ein Problem, auf das ich gestoßen bin:Ich habe die Binärdatei vor dem Hochladen zu Subversion hinzugefügt.Beim Vergleichen/Komprimieren der Binärdatei wurden dann die versteckten .svn-Verzeichnisse eingeschlossen, was die Codesignatur durcheinander brachte.

Ich habe verschiedene Dinge ausprobiert, nachdem ich verschiedene Beiträge gelesen hatte, einschließlich der oben genannten.Was mir letztendlich geholfen hat, war, ganz von vorne anzufangen!Ich habe alle mit meiner App verknüpften Zertifikate und Bereitstellungsprofile gelöscht.

Ich habe ein neues Entwicklungszertifikat und ein neues Vertriebszertifikat neu erstellt.Ich habe das Zwischenzertifikat erneut heruntergeladen.Dann habe ich sowohl das Entwicklungsprofil als auch das Vertriebsprofil neu erstellt.

Nach der Installation der drei Zertifikate (ich bemerkte, dass die Distribution dieses Mal sowohl private als auch öffentliche Schlüssel hatte) und der beiden Bereitstellungsprofile (mein Distributionsprofil wurde nicht als nicht gültiges Zertifikat gekennzeichnet!) funktionierte alles.

Nachdem ich die Entscheidung getroffen hatte, alles zu widerrufen und einfach von vorne zu beginnen, dauerte es nur etwa 5 Minuten, das neue Zeug zu erstellen und neu zu installieren.

Die Lösung finden Sie unter diesem Link:

http://greghaygood.com/2010/09/04/invalid-binary-message-from-itunesconnect

Die kurze Antwort lautet: „Irgendwann habe ich meine info.plist noch einmal überprüft und etwas entdeckt.“Ich habe CFBundleIconFiles gemäß den neuen Richtlinien hinzugefügt, aber es gab einen leeren Eintrag in der Array-Liste.Ich habe das entfernt und erneut eingereicht, und es wurde schließlich akzeptiert!“

Ich hatte ein ähnliches Problem, aber in Monotouch.Ich habe festgestellt, dass mein Release-Profil auf die Verwendung von Entwicklerzertifikaten eingestellt ist.Es sollte so aussehen:enter image description here

Es scheint, dass dieses Problem viele Ursachen hat.Hier ist die Lösung für mich:

Dies gilt für jeden, der mehreren Entwicklungsteams angehört (z. B.Ihre eigenen Apps und Ihre Unternehmen).

Wenn Sie den Build mit einem Satz Anmeldeinformationen erstellen und ihn mit einem anderen Satz erneut signieren (z. B.für die Ad-hoc-/Appstore-Verteilung), müssen Sie Stellen Sie sicher, dass der Build ursprünglich mit Anmeldeinformationen erstellt und signiert wurde, die zu demselben iOS-Entwicklungsteam gehören, zu dem auch die Vertriebsanmeldeinformationen gehören, mit denen Sie erneut signieren.

Erstellen Sie also nicht mit den Anmeldeinformationen „Indy Dev Inc“ und versuchen Sie dann, die Bereitstellung mit den Anmeldeinformationen „Company Inc“ durchzuführen.Stellen Sie sicher, dass Sie sowohl die Entwicklungs- als auch die Vertriebsanmeldeinformationen von „Company Inc“ einrichten und diese verwenden.

Weitere Informationen dazu habe ich auf meinem Blog gepostet: http://omegadelta.net/2011/06/09/fiendish-ios-code-signing-invalid-binary-issue/

Ich hatte das gleiche Problem.Ich war bereit, dieses Problem aufzugeben, aber ich fand es heraus, als ich meinen Code mit Murky eincheckte.Ich überfliege immer die Unterschiede zu den Dateien, die sich geändert haben, bevor ich einchecke.Dabei bemerkte ich dieses Mal, dass sich die Datei project.pbxproj geändert hatte ... und im Abschnitt „Verteilung“ war der Eintrag für „PROVISIONING_PROFILE[sdk=iphoneos*]“ leer.

Das Beenden und Neustarten von Xcode hat bei mir nicht funktioniert.Stattdessen ging ich sowohl in meine Projekt- als auch in meine Zieleinstellungen und änderte die Codesignatur, um mein Verteilungsprofil direkt auszuwählen, anstatt mich auf die Funktion zur automatischen Auswahl zu verlassen.Dies führte dazu, dass die Datei project.pbxproj mit den richtigen Werten gefüllt wurde, obwohl die automatische Auswahlfunktion angeblich genau dasselbe Profil ausgewählt hatte, das ich manuell ausgewählt hatte.

Ich brauche ein Bier...

Nachdem wir alle anderen hier aufgeführten Korrekturen ausprobiert hatten, meldeten wir eine TSI bei Apple.Nachdem Sie alle Schritte befolgt haben Technischer Hinweis TN2250 Unser Problem wurde dadurch verursacht, dass eine versiegelte Ressource fehlte oder ungültig war.In unserem Fall war es so ._.DS_Store.

Der "..“ wird als Apple-Double-Datei bezeichnet und ist das Ergebnis des *entpackten* Kopierens desDiese zusätzlichen "..“-Dateien führen zu einem Fehler bei der Code-Signatur-Überprüfung.

Um die problematischen Apple Double-Dateien aus Ihrem Xcode-Projektordner zu bereinigen, führen Sie den Befehl dot_clean für den Ordner Ihres Xcode-Projekts aus, führen Sie einen sauberen Build durch, archivieren Sie Ihre Übermittlung erneut und versuchen Sie es erneut.

dot_clean /the/path/to/xcode/project

Notiz:Sie können den Projektordner einfach in das Terminal ziehen, um den Pfad automatisch auszufüllen

Es gibt keine Meldung, wenn Sie den Befehl ausführen, aber beim nächsten Build zeigt der Projektbuild möglicherweise eine Warnung zu der Datei an.Sie können dies ignorieren, die App führt dann eine erfolgreiche Validierung und Übermittlung durch.

Dieses Problem wurde durch Bereinigen der Datei myProject.xcodeproj behoben (Rechtsklick, Paket öffnen). Das Paket enthielt Dateien vom Mitentwickler. Nach dem Löschen dieser Dateien war das Problem behoben

Für mich bestand die Lösung darin, eine Vertriebszertifizierung zu erstellen bei:Apple Developer Provisioning Portal.

Der Sache halber möchte ich hinzufügen, was dieses Problem für mich behoben hat.Ich hatte ein ?(Fragezeichen) in meinem App-Titel, das den Fehler verursacht hat.

Ich habe eine ungültige Binärdatei erhalten, wenn die App keine Remote-Push-Benachrichtigung verwendet, aber ich habe den Code für die Push-Registrierung und die Callback-Delegierten für die Registrierung/den Empfang von Remote-Benachrichtigungen unkommentiert gelassen, auch wenn der Code nicht verwendet wird.

Das ist neu.Meine letzte Einreichung letzte Woche war in Ordnung.Diese Woche wird eine ungültige Binärdatei zurückgegeben.Zum Glück gibt es eine E-Mail, die den Fehler erklärt.

Ich hatte ein ähnliches Problem, verwende aber entitlements.plist nicht.Nach einem Dutzend fehlgeschlagener Uploads habe ich jedoch meine info.plist überprüft und etwas entdeckt.Mein CFBundleIconFiles-Array hatte einen leeren Eintrag.Ich habe das entfernt und erneut eingereicht, und es wurde schließlich akzeptiert!

Im Ernst, wie schwierig wäre es für Apple, solche Validierungsfehler aufzudecken?

Bearbeiten:Es ist nicht sofort ersichtlich, wo sich die CFBundleIconFiles befinden, da sie einen anderen Namen verwenden.Klicken Sie in der Projektinformationsansicht bei gedrückter Strg-Taste und wählen Sie „Rohschlüssel/Werte anzeigen“ aus. Anschließend werden die Verweise auf CFBundleWhatever angezeigt.Im Fall dieses Editors versuchte er, eine nicht vorhandene Datei icon=72-@2x.png zu verwenden.

Meine zwei Cent:

Laden Sie die neueste Version des Application Loader herunter.Ich habe gerade aktualisiert und erhalte jetzt eine andere Fehlermeldung.

Ich habe diesen Ärger gerade (noch einmal) durchgemacht, aber dieses Mal stellte ich fest, dass mein Vertriebsprofil den Status „Ungültig“ hatte.Wenn Sie der Meinung sind, dass alles andere in Ordnung ist, überprüfen Sie den Status im Portal noch einmal und erneuern/laden Sie alles erneut herunter, was sich nicht im Status „Aktiv“ befindet.

Ich habe nach dem Hochladen einer App eine ungültige Binärdatei erhalten, ohne dass ich per E-Mail nachgefragt habe, warum der Upload fehlgeschlagen ist.Ich habe versucht, ein paar Dinge gleichzeitig zu tun, und bin mir nicht sicher, welche der folgenden Maßnahmen das Problem tatsächlich behoben hat:

  1. MacBook Pro neu gestartet
  2. Habe den Quellcode für mein Projekt von einem NTFS-Laufwerk auf ein HFS+-Laufwerk verschoben und neu kompiliert.

Ich hatte ein Problem damit und mit dem 4.3 GM SDK.Eine unserer Apps schaffte es nach Erhalt des Uploads nicht.Es stellte sich heraus, dass es sich um ein Problem mit dem Bereitstellungsprofil handelte.Ich habe das App-Store-Profil neu generiert und es hat einwandfrei funktioniert.

Meine Lösung bestand darin, eine neue App-ID zu erstellen.Ich weiß nicht genau, warum das das Problem behoben hat, vermute aber, dass die Bundle-IDs nicht übereinstimmten. Durch die Erstellung der neuen App-ID musste ich sicherstellen, dass meine App und iTunes dasselbe erwarteten.

Eine andere Lösung:

Bei mir wurde das Problem einfach behoben, indem ich die „Release“-Zertifikate unter „Codesignatur“ festlegte.Sie waren ursprünglich auf „Keine Codierung verwenden“ eingestellt.

Bei mir wurde das Problem gelöst, indem ich ein PNG-Bild mit der Non-Interlaced-Option erneut speicherte.In früheren Versionen war Interlaced-PNG zulässig, Sie sollten jedoch wissen, dass diese Bilder zu einer ungültigen Binärdatei führen können.

Meine Apple-Nachricht:Beschädigte Symboldatei – Die Symboldatei iconGQ@2x.png scheint beschädigt zu sein.Ihr Symbol darf keine Interlaced-PNG-Datei sein.

Sie können mit dem Befehl „file“ im Terminal sehen, ob das PNG interlaced ist:Eva-Madrazos-MacBook-Pro-2:GQ 7 integracion ads Eva$ Datei *.png Vorgabe:.png:PNG-Bilddaten, 320 x 480, 8-Bit/Farb-RGB, ohne Zeilensprung

Viel Glück Eva

Ich möchte auf die Möglichkeit hinweisen, Apple eine E-Mail zu senden und sie zu bitten, ihre Protokolle zu überprüfen.Genau das habe ich getan, nachdem ich vorher jede Menge Dinge ausprobiert hatte.Es war notwendig, sie nach fast vier Wochen daran zu erinnern, aber schließlich antworteten sie und zeigten genau auf, wo das Problem lag.

Das Problem in meinem Fall war, dass ich zuvor andere App-Symbole ausprobiert hatte und in „CFBundleIcons“ immer noch ein Verweis auf das alte Bild vorhanden war.Ich habe die Drag-and-Drop-Funktion zum Festlegen des Symbols verwendet, aber mir ist nicht aufgefallen, dass der alte Inhalt nicht vollständig gelöscht wurde, bevor die neue Referenz hinzugefügt wurde.

Um die fehlerhafte Referenz zu sehen, mussten die Pfeile erweitert werden, um jedes einzelne Unterelement in der Plist-Datei anzuzeigen.Ein Tipp besteht darin, mit der rechten Maustaste in die Datei zu klicken und die Option zum Anzeigen des Rohinhalts auszuwählen.Auf diese Weise müssen Sie nichts erweitern.

Ich habe alle anderen Lösungsvorschläge ausprobiert, aber nichts hat geholfen.

Am Ende habe ich eine erstellt neues Xcode-Projekt und kopiere meinen gesamten Code und meine Ressourcen hinein.Das hat funktioniert und meine App wurde in die Überprüfungswarteschlange gestellt.

Kann ich auch empfehlen Technische Hinweise von Apple zum Codesignieren zum Debuggen/Verifizieren.

uuid ist nicht erlaubt.Ich habe es behoben, indem ich alle [[UIDevice currentDevice] uniqueIdentifier];

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top