Ich versuche, eine Anwendung in den iPhone App Store hochzuladen, erhalte jedoch die folgende Fehlermeldung von iTunes Connect:
Die von Ihnen hochgeladene Binärdatei war ungültig. Die Signatur war ungültig oder nicht mit einem Apple-Einreichungszertifikat signiert.
Hinweis: Die Details der ursprünglichen Frage wurden entfernt, da diese Seite zu einem Repository für alle Informationen über mögliche 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 .
iphone
ios
app-store
code-signing
app-store-connect
Kristopher Johnson
quelle
quelle
Antworten:
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 (und einer sauberen Erstellung) zu beenden und neu zu starten, um dieses Problem zu umgehen.
quelle
Ich wollte nur erwähnen, dass auch ich das Problem mit Zip von der Kommandozeile hatte. Das Problem liegt in der Art und Weise, wie Symlinks standardmäßig behandelt werden. Verwenden von:
zip -y -r myapp.zip myapp.app
Dieses Problem wurde gelöst.
quelle
Ich hatte das gleiche Problem und löste es folgendermaßen:
Die Eigenschaftszertifikate wurden auf meinem Entwicklungscomputer installiert und mobileprovision.embedded wurde in das Distributionsarchiv aufgenommen. Nach ungefähr einer Stunde Googeln und Graben fand ich die Quelle des Fehlers. In Xcode hatte ich die Release-Konfiguration kopiert und eine neue Distributionskonfiguration erstellt und dann die Signaturidentität in mein Distributionszertifikat geändert. Obwohl es in der GUI aktualisiert wurde, wurde die Projektdatei nicht korrekt aktualisiert.
Wenn Sie auf denselben Fehler stoßen, suchen Sie in Ihrem Verzeichnis [ProjectName] .xcodeproj nach der Datei project.pbxproj und öffnen Sie sie in Ihrem bevorzugten Editor. Suchen Sie nach dem Abschnitt Distribution. Mein kaputter 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, und erstellen Sie es neu. Der 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 Richtlinien wurden geändert, um die Unschuldigen zu schützen
quelle
Gleiches Problem, andere Lösung.
In meinem Fall habe ich die Datei mit
zip -r myapp.zip myapp.app
Turns out komprimiert. Der Befehl zip hat das Bundle verschraubt. Durch Komprimieren aus dem Finder funktionierte es.quelle
cp -r
und dann den Reißverschluss gemacht und es war dercp
, der die Sym-Links in der App vermasselt hat. Es sollte seincp -R
, Sym-Links beizubehalten.Ich hatte das gleiche Problem und nachdem ich mehrere Dinge ausprobiert hatte, entfernte ich die .plist-Berechtigungen aus den Codesignatur-Berechtigungen (ließ es einfach leer) und es wurde einwandfrei erstellt und ENDLICH hochgeladen.
Viel Glück alle :-D
quelle
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 dies mit dem Problem "Ungültige binäre / ungültige Signatur" fehl. Bei sorgfältiger Prüfung stellte ich fest, dass der Wert der Anwendungskennung in der Berechtigungsplist-Datei deaktiviert war.
Dies hat höchstwahrscheinlich damit zu tun, dass ich das Bereitstellungsprofil von einem Platzhalter-Profil durch ein App-spezifisches Profil ersetzt habe (erforderlich für In-App-Käufe). Die falsche App-ID wurde unter dem alten Profil qualifiziert. Es stimmte nicht mit der App-ID in der info.plist überein, aber anscheinend hat iTunes das vergeben.
Um es noch einmal zusammenzufassen:
info.plist: com.mydomain.foo dist.plist: com.mydomain.bar Profile: com.mydomain.*
ist OK, während
info.plist: com.mydomain.foo dist.plist: com.mydomain.bar Profile: com.mydomain.foo
verursacht "Ungültige Binärdatei".
quelle
Siehe diesen Link für die Lösung:
http://greghaygood.com/2010/09/04/invalid-binary-message-from-itunesconnect
Die kurze Antwort lautet: "Schließlich habe ich meine info.plist ü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 diesen entfernt und erneut gesendet, und es war schließlich." akzeptiert!"
quelle
Ich hatte auch das gleiche Problem, 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 so einzustellen, wie ich normalerweise den Simulator verwende, aber dann wird das Bereitstellungsprofil nicht enthalten ...
Dies könnte ein Noob-Fehler sein. Normalerweise können Sie kein Gerät erstellen, aber wenn Sie es für die Verteilung tun, können Sie es.
quelle
Nachdem ich die Schritte mehrmals wiederholt hatte, konnte ich meine App endlich hochladen.
Ich weiß nicht genau, was das Problem behoben hat, aber vor dem erfolgreichen Versuch habe ich Xcode und Firefox geschlossen und neu gestartet. Ich denke, eine dieser Apps hatte einen schlechten Juju.
quelle
Hier ist ein Problem, auf das ich gestoßen bin: Ich habe die Binärdatei vor dem Hochladen zu Subversion hinzugefügt. Das Vergleichen / Zippen der Binärdatei umfasste dann die versteckten .svn-Verzeichnisse, die die Codesignatur durcheinander brachten.
quelle
Ich habe verschiedene Dinge ausprobiert, nachdem ich verschiedene Beiträge gelesen hatte, einschließlich der oben genannten. Was für mich endlich funktionierte, war ganz von vorne zu beginnen! Ich habe jedes mit meiner App verknüpfte Zertifikat und Bereitstellungsprofil 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 Verteilungsprofil neu erstellt.
Nach der Installation der drei Zertifikate (diesmal stellte ich fest, dass die Distribution sowohl private als auch öffentliche Schlüssel hatte) und der beiden Bereitstellungsprofile (mein Distributionsprofil wurde nicht als ohne gültiges Zertifikat gekennzeichnet!) Funktionierte alles.
Nachdem ich mich entschieden hatte, alles zu widerrufen und von vorne zu beginnen, dauerte es nur etwa 5 Minuten, um das neue Material zu erstellen und neu zu installieren.
quelle
Ich hatte ein ähnliches Problem, aber in Monotouch. Ich habe festgestellt, dass in meinem Release-Profil Entwicklerzertifikate verwendet wurden. Es sollte so aussehen:
quelle
Es scheint, dass dieses Problem viele Ursachen hat. Hier ist die Lösung für meine:
Dies gilt für alle Personen, die mehreren Entwicklungsteams angehören (z. B. Ihre eigenen Apps und Ihre Unternehmen).
Wenn Sie den Build mit einem Satz von Anmeldeinformationen erstellen und mit einem anderen erneut signieren (z. B. für die Ad-hoc- / Appstore-Verteilung), müssen Sie sicherstellen, dass der Build ursprünglich mit Anmeldeinformationen erstellt und signiert wurde, die demselben iOS-Entwicklungsteam gehören wie das Zu den Anmeldeinformationen für die Verteilung, mit denen Sie erneut signieren, gehören .
Erstellen Sie also nicht mit den Anmeldeinformationen von "Indy Dev Inc" und versuchen Sie dann, mit den Anmeldeinformationen von "Company Inc" bereitzustellen. Stellen Sie sicher, dass Sie sowohl "Company Inc" -Entwickler als auch Verteilungsanmeldeinformationen einrichten und verwenden.
Ich habe weitere Informationen dazu in meinem Blog veröffentlicht: http://omegadelta.net/2011/06/09/fiendish-ios-code-signing-invalid-binary-issue/
quelle
Ich hatte das gleiche Problem. Ich war bereit, das Handtuch für dieses Problem zu werfen, aber ich fand es heraus, als ich meinen Code mit Murky eincheckte. Ich überfliege immer die Unterschiede in den Dateien, die sich vor dem Einchecken geändert haben. Dabei habe ich festgestellt, dass sich die Datei project.pbxproj geändert hat .... und im Abschnitt Distribution den Eintrag für „PROVISIONING_PROFILE [sdk = iphoneos *] War leer.
Das Beenden und Neustarten von Xcode hat bei mir nicht funktioniert. Stattdessen habe ich sowohl meine Projekt- als auch meine Zieleinstellungen aufgerufen und die Codesignatur geändert, um mein Verteilungsprofil direkt auszuwählen, anstatt mich auf die automatische Auswahlfunktion zu verlassen. Dadurch wurde die Datei project.pbxproj mit den richtigen Werten gefüllt, obwohl die automatische Auswahlfunktion angeblich genau das Profil ausgewählt hat, das ich manuell ausgewählt habe.
Ich brauche ein Bier...
quelle
Nachdem wir alle anderen hier aufgeführten Korrekturen ausprobiert hatten, haben wir eine TSI bei Apple protokolliert. Nachdem wir alle Schritte im Technischen Hinweis TN2250 ausgeführt haben, wurde unser Problem verursacht, weil eine versiegelte Ressource fehlte oder ungültig war. In unserem Fall war es
._.DS_Store
.Das "... " wird als Apple Double-Datei bezeichnet und ist das Ergebnis des Kopierens des Xcode Project-Ordners * entpackt * auf ein Dateisystem, das die Ressourcengabeln von HFS + (die für Codesignaturen verwendet werden) nicht ordnungsgemäß unterstützt, auf und zurück. Diese zusätzlichen "... " Dateien resultieren und verursachen einen Fehler bei der Überprüfung der Codesignatur.
Um die problematischen Apple Double-Dateien aus Ihrem Xcode-Projektordner zu entfernen, führen Sie den Befehl dot_clean im Ordner Ihres Xcode-Projekts aus, erstellen Sie einen sauberen Build und durchsuchen Sie Ihre Übermittlung erneut und versuchen Sie es erneut.
dot_clean /the/path/to/xcode/project
Hinweis: Sie können den Projektordner einfach in das Terminal ziehen, um den Pfad automatisch zu füllen
Beim Ausführen des Befehls wird keine Meldung angezeigt, aber beim Erstellen des Projekts wird möglicherweise beim nächsten Erstellen eine Warnung zu der Datei angezeigt. Sie können dies ignorieren, die App wird validiert und erfolgreich gesendet.
quelle
Das Problem wurde behoben, indem die Datei myProject.xcodeproj bereinigt wurde (Rechtsklick, Paket öffnen). Das Paket enthielt Dateien vom Mitentwickler. Nach dem Löschen dieser Dateien wurde das Problem behoben
quelle
Für mich bestand die Lösung darin, eine Distributionszertifizierung zu erstellen bei: Apple Developer Provisioning Portal .
quelle
Für das, was es wert ist, möchte ich hinzufügen, was dieses Problem für mich behoben hat. Ich hatte ein ? (Fragezeichen) in meinem App-Titel, der den Fehler verursacht hat.
quelle
Ich habe eine ungültige Binärdatei erhalten, wenn die App keine Remote-Push-Benachrichtigung verwendet, aber den Code zum Registrieren von Push und die Rückrufdelegierten zum Registrieren / Empfangen von Remote-Benachrichtigungen unkommentiert gelassen, auch wenn der Code nicht verwendet wird.
Dies 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.
quelle
Ich hatte ein ähnliches Problem, aber ich verwende keine Berechtigungen.plist. Nach einem Dutzend fehlgeschlagener Uploads überprüfte ich jedoch meine info.plist und entdeckte etwas. Mein CFBundleIconFiles-Array hatte einen leeren Eintrag. Ich habe das entfernt und erneut eingereicht, und es wurde endlich akzeptiert!
Ernsthaft, wie schwer wäre es für Apple, solche Validierungsfehler aufzudecken?
Bearbeiten: Es ist nicht sofort offensichtlich, wo sich die CFBundleIconFiles befinden, da sie einen anderen Namen verwenden. Klicken Sie in der Projektinfo-Ansicht bei gedrückter Strg-Taste auf "Raw Keys / Values anzeigen" und wählen Sie diese aus. Anschließend werden die Verweise auf CFBundleWhatever angezeigt. Im Fall dieses Editors versuchte er, eine nicht vorhandene Datei [email protected] zu verwenden.
quelle
Meine zwei Cent:
Laden Sie die neueste Version des Application Loader herunter. Ich habe gerade aktualisiert und erhalte jetzt eine andere Fehlermeldung.
quelle
Ich habe gerade diesen Ärger (wieder) durchgemacht, aber dieses Mal stellte ich fest, dass mein Distributionsprofil den Status "Ungültig" hatte. Wenn Sie der Meinung sind, dass alles andere in Ordnung ist, überprüfen Sie den Status im Portal und erneuern Sie alles, was sich nicht im aktiven Zustand befindet, und laden Sie es erneut herunter.
quelle
Ich habe nach einem App-Upload eine ungültige Binärdatei erhalten, ohne dass per E-Mail nachverfolgt wurde, warum dies fehlgeschlagen ist. Ich habe versucht, ein paar Dinge gleichzeitig zu tun, und ich bin mir nicht sicher, welche der folgenden Lösungen dies tatsächlich behoben hat:
quelle
Ich hatte ein Problem mit diesem und dem 4.3 GM SDK. Eine unserer Apps würde es nach dem Upload nicht mehr schaffen. 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 gut funktioniert.
quelle
Meine Lösung bestand darin, eine neue App-ID zu erstellen. Ich bin mir nicht sicher, warum das Problem behoben wurde, aber ich vermute, dass die Bundle-IDs möglicherweise nicht übereinstimmen. Durch das Erstellen der neuen App-ID musste ich sicherstellen, dass meine App und iTunes dasselbe erwarteten.
quelle
Eine andere Lösung:
Für mich hat das einfache Setzen der 'Release'-Zertifikate unter' Code Signing 'das Problem behoben. Sie wurden ursprünglich auf "Kein Codezeichen" gesetzt.
quelle
Für mich wurde das Problem durch erneutes Speichern eines PNG-Bildes mit der Option ohne Interlaced gelöst. In früheren Versionen war Interlaced-PNG zulässig, aber Sie wissen, dass diese Bilder die ungültige Binärdatei verursachen können.
Meine Apple-Nachricht: Korrupte Symboldatei - Die Symboldatei [email protected] scheint beschädigt zu sein. Ihr Symbol darf keine Interlaced-PNG-Datei sein.
Sie können sehen, ob das PNG mit dem Befehl "Datei" im Terminal interlaced ist: Eva-Madrazos-MacBook-Pro-2: GQ 7-Integrationsanzeigen Eva $ file * .png Default.png: PNG-Bilddaten, 320 x 480, 8-Bit / Farbe RGB, nicht interlaced
Viel Glück, Eva
quelle
Ich möchte auf die Möglichkeit hinweisen, Apple eine E-Mail zu senden und sie zu bitten, ihre Protokolle zu überprüfen. Ich habe genau das getan, nachdem ich zuerst eine Menge Dinge ausprobiert hatte. Es war notwendig, sie nach fast vier Wochen daran zu erinnern, aber schließlich antworteten sie und wiesen auf die genaue Stelle des Problems hin.
Das Problem in meinem Fall war, dass ich zuvor andere App-Symbole ausprobiert hatte und ein Verweis auf das alte Bild immer noch in 'CFBundleIcons' blieb. Ich habe die Drag & Drop-Funktion verwendet, um das Symbol festzulegen, aber ich habe nicht bemerkt, 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 ist, 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.
quelle
Ich habe alle anderen vorgeschlagenen Lösungen ausprobiert, aber nichts hat geholfen.
Am Ende habe ich ein neues Xcode-Projekt erstellt und meinen gesamten Code und meine Ressourcen darin kopiert. Das hat den Trick gemacht und meine App wurde in die Überprüfungswarteschlange gestellt.
Ich kann auch Apples technische Hinweise zur Codesignatur zum Debuggen / Überprüfen empfehlen .
quelle
uuid ist nicht erlaubt. Ich habe es behoben, indem ich alle [[UIDevice currentDevice] uniqueIdentifier] entfernt habe.
quelle