web-dev-qa-db-de.com

Nicht öffentliche API-Nutzung: Die App enthält ein oder mehrere beschädigte Binärdateien

Ich bin wirklich frustriert, was mit den neuen Versionen der iOS-Anwendung geschieht. Hier ist die Geschichte.

Am 25. Januar 2018 haben wir die neue Version 3.3.27 Build-Nummer 1.0 hochgeladen. Das wird erfolgreich verarbeitet und steht im Testflug zum Testen zur Verfügung. Danach haben wir ein Problem gefunden und auf 26. Januar 2018 wir haben das Problem behoben und laden den neuen Build 1.1 hoch und erhalten eine E-Mail von iTunes Connect.

Sehr geehrter Entwickler,

Wir haben ein oder mehrere Probleme mit Ihrer letzten Lieferung für "appname" festgestellt. Um Ihre Lieferung zu bearbeiten, müssen die folgenden Probleme behoben werden:

Nicht öffentliche API-Nutzung:

The app contains one or more corrupted binaries. Rebuild the app and resubmit.

Wenn die Methodennamen in Ihrem Quellcode mit den oben aufgeführten privaten Apple-APIs Übereinstimmen, können Sie durch Ändern der Methodennamen verhindern, dass diese App In zukünftigen Einreichungen markiert wird. Beachten Sie außerdem, dass sich eine Oder mehrere der oben genannten APIs in einer statischen Bibliothek befinden können, die in Ihrer App Enthalten war. Wenn ja, müssen sie entfernt werden.

Wenn Sie der Meinung sind, dass diese Nachricht fehlerhaft gesendet wurde und Sie nur Von Apple veröffentlichte APIs gemäß den Richtlinien verwendet haben, senden Sie die neunstellige Apple-ID der -App zusammen mit detaillierten Informationen zum Grund Sie glauben, dass die oben genannten APIs falsch markiert wurden, an [email protected] Weitere Informationen finden Sie im

Während ich den Build vor dem Upload validiere, ist sein Erfolg:

 enter image description here

Während ich die App hochlade, bekomme ich folgenden Erfolg:

 enter image description here

In der Mail habe ich keine richtigen Informationen erhalten, wie der Name eines beschädigten Binär- oder Frameworks lautet. Was ist die Methode, die wir als nicht öffentlich verwendet haben, wir haben vor dem 25. Januar ein Update der 100er-Version dieser Anwendung hochgeladen. Alles ist gut und akzeptabel.

Dann versuche ich folgende Änderungen:

  1. App neu erstellen und erneut senden, um die gleiche E-Mail zu erhalten.
  2. Deinstallieren Sie Xcode9.2 und installieren Sie erneut die gleiche E-Mail.
  3. Entfernen Sie die Änderungen und laden Sie die Build-Nummer 1.0 erneut hoch, um dieselbe E-Mail zu erhalten.
  4. Ändern Sie den Mac und versuchen Sie, die neue E-Mail-Nachricht erneut hochzuladen.
  5. Versuchen Sie, alte Versionen, die zuvor live waren, und erneut dieselben emai hochzuladen

Wir haben eine E-Mail an iTunes Connect Review gesendet, aber seit 3 ​​Tagen haben wir keine Antwort von ihnen erhalten. Ich recherchiere und ab dem 26. Januar stehen viele Benutzer vor einer solchen Bewerbung.

Wenn jemand diese Lösung kennt, die in der Vergangenheit oder in letzter Zeit mit diesem Problem konfrontiert ist, helfen Sie uns bitte

11
Nitin Gohel

Es gibt keine Lösung für dieses Problem. Apple hat seit Tagen nichts mehr über diese Fehler oder ungültige binäre Nachrichten in seinem offiziellen Konto oder in seinen Foren oder auf seiner offiziellen Entwicklerseite erwähnt. Auch sie antworten nicht auf Ihre E-Mail. 

Einige von ihnen lösen dieses Problem durch BitCode aktivieren. Einige lösen dieses Problem für das Update. PODFILE. Einige lösen das Problem, indem einige alte Swift-Frameworks entfernt werden, die im Projekt verwendet werden.

Aber endlich bekomme ich eine Lösung von mir, die für mich funktioniert. Als ich das Projekt baute, fand ich eine Warnung auf der linken Seite von Xcode wie folgt.

 enter image description here

Ich denke, Apple hat die alte Swift-Unterstützung jetzt entfernt. Falls Ihr Projekt eine Swift-Klasse oder eine Pod-Datei verwendet, müssen wir auf Swift 4 aktualisieren.

Sobald ich zu Swift 4 konvertiere, erhalte ich folgende Warnung:

Die Verwendung von Swift 3 @objc-Inferenz im Swift 4-Modus ist veraltet. Bitte adressieren Sie veraltete @objc-Inferenzwarnungen, testen Sie Ihren Code Mit aktivierter Protokollierung "Verwendung veralteter Swift 3 @objc-Inferenz". und deaktivieren Sie dann die Inferenz, indem Sie die Build - Einstellung "Swift 3 @objc Inference" in "Default" für das Ziel "appname" ändern.

Um diese Warnung zu beheben, verwende ich folgenden Link Die Verwendung von Swift 3 @objc-Inferenz im Swift 4-Modus ist veraltet? und in der Swift-Klasse habe ich @objc vor der öffentlichen Deklaration verwendet.

Außerdem überprüfe ich den gesamten Quellcode und entferne die unbenutzte Bibliothek von podfile und class aus dem Projekt.

durch obige Weise behebe ich das Problem und nach dem Hochladen des 13. Builds akzeptierte das schließlich.

2
Nitin Gohel

Nach vielen Untersuchungen in diesem Bereich haben wir schließlich das Problem für dieses Problem gefunden: Es scheint, dass Apple diesen Fehler für Anwendungen ausgibt, die sowohl 32 als auch 64 Bit unterstützen.

Apple gab this reminder für Mac Appstore, aber es scheint, dass auch iOS-Anwendungen betroffen sind.

Eine Lösung für dieses Problem besteht darin, den Bitcode OR zu unterstützen, um die Unterstützung für 32-Bit-Geräte aufzuheben, indem die Unterstützung für ARMV7 und ARMV7S oder die unten aufgeführten Einstellungen von Valid Architectures aus den Build-Einstellungen entfernt werden. Dies bedeutet, dass Ihre Anwendung nur auf dem iPhone 5S und höher funktioniert. Ich hoffe, das hilft jemandem.

Vielen Dank und viel Spaß beim Codieren!

4
Andrei Neag

Wir haben 2 Lösungen für das Problem gefunden. Entfernen Sie die 32-Bit-Unterstützung, auf die oben verwiesen wurde. Und entfernen Sie die Verwendung von CommonCrypto. Wir haben CommonCrypto durch CryptoSwift ersetzt ( https://github.com/krzyzanowskim/CryptoSwift ).

Wir haben uns für CommonCrypto entschieden, da wir unsere 32-Bit-Benutzer (iPhone4S, 5 und 5C) nicht verlieren wollten.

0
Beto Trevisani