Die resultierende API-Analyse ist beim Hochladen der App in den Mac Store zu umfangreich

107

Ich werde meine erste Mac-App in den Apple Store hochladen

Und alle Validierungsfehler von Symbol, Kategorie ... behoben

Aber danach habe ich die Validierung mit Warnung bestanden:

The resulting API analysis file is too large. We were unable to validate your API usage prior to delivery. This is just an informational message.

Und mein Upload wird mit dem Grund abgelehnt: "Ungültige Binärdatei"
Hat jemand Erfahrung mit diesem Fall?


UPDATE: Diese Warnung ist nicht der Grund für die Ablehnung, sondern möglicherweise das Problem bei der App-Archivierung. Ich habe meine App erfolgreich zum Speichern freigegeben.

Das können wir also ignorieren.

arasa
quelle
1
Könnten Sie dieses Problem lösen? Ich habe das gleiche Problem und weiß nicht, was ich tun soll!
Nosmirck
1
Erhielt dies auch. Ich kann nirgendwo eine Quelle finden, um genau zu erklären, was das bedeutet.
Andrew Davis
5
Ich habe gerade meine sehr kleine Versand-App von Swift 1.2 auf Swift 2 aktualisiert und erhalte diesen Fehler. Keine zusätzliche Funktionalität. Dies muss tatsächlich ein Mangel in ihrem Analysetool sein. (Dies ist für eine iOS-App in Xcode 7, nicht im Mac Store.)
Ray Fix
2
Wie Ray Fix, der keine private API verwendet, sondern nur den Code von Objective-C auf Swift aktualisiert
Jerome Diaz
1
Wie oben, keine privaten APIs, nur Xcode 7 verwendet und ich habe.
DevC

Antworten:

65

Apple verbietet die Verwendung privater oder undokumentierter APIs in iOS-Apps. Alle Aufrufe von Methoden, die denselben Namen wie private oder nicht dokumentierte API-Methoden haben, werden als private API-Verwendung gekennzeichnet, auch wenn die aufgerufene Methode von Ihnen selbst definiert wurde.

App Loader führt einen ersten Scan durch, bei dem nach Methodennamen, Zugriff auf Instanzvariablen und sogar nach @ selector-Verwendung mit privaten Methodennamen gesucht wird. App Loader leistet nicht immer gute Arbeit. Je mehr Quelldateien Sie haben, desto wahrscheinlicher ist es, dass Sie gewarnt werden, dass die von ihm generierte API-Analysedatei "zu groß" ist.

Glücklicherweise können Sie Ihre Bewerbung trotz der Warnung weiterhin einreichen. Apple überprüft dies intern. Wenn etwas aufgrund überlappender Namen zurückgeworfen wird, müssen Sie den Überprüfungsprozess erneut durchlaufen.

Erika Sadun hat versucht, eine App namens API Kit zu erstellen, die das Scannen für Sie übernimmt, aber sie scheint ihre Arbeit aufgegeben und alle Spuren der Anwendung von ihrer Website entfernt zu haben.

Chimp Studios hat App Scanner entwickelt , um dasselbe zu tun, aber es wurde seit 2011 nicht mehr aktualisiert. Leider gibt es für große Projekte - und dies schließt Projekte mit vielen zusätzlichen Pods von CocoaPods ein - kein aktuelles (2014) Gut eine andere Möglichkeit, dieses Problem zu lösen, als Dinge proaktiv so zu benennen, dass sie nicht mit privaten API-Methoden- und Instanznamen in Konflikt stehen.

Sie können sich proaktiv über Apples Kakao-Namenskonventionen informieren und versuchen, diese zu antizipieren. Das wird zukünftige Kopfschmerzen reduzieren. Bis Apple jedoch so etwas wie Namespaces einführt, kann dieses Problem von Zeit zu Zeit auftreten.

Der Fehler "Ungültige Binärdatei" kann verschiedene Ursachen haben, steht jedoch in keinem Zusammenhang mit dem von App Loader erstellten API-Analysedokument.

Sie sollten wissen, dass es auch beim Scannen noch Möglichkeiten gibt, das Verbot der Verwendung privater / undokumentierter APIs zu umgehen. :) :)

lswank
quelle
Wollen Sie damit sagen, dass dieser "zu große" Fehler ein rein falsch beschrifteter Fehler ist? Dass es immer auf eine ungültige API-Nutzung hinweist? Wie haben Sie diese Verbindung hergestellt?
Chris Prince
Mir ist klar, dass es sich bei der Frage um den Mac App Store handelt, aber für den iOS App Store ist diese Antwort nicht vollständig korrekt. Ich hatte gerade diese Warnung, als ich versuchte, meine App mit Xcode 7 GM zu validieren, aber als ich sie tatsächlich mit Xcode 7 GM auf ITC hochlud, gab es keine Probleme.
Chris Prince
Was ist der Hinweis ... dass Sie Ihren letzten Satz implizieren?
goodguys_activate
Vielen Dank für eine sehr hilfreiche Antwort. Wissen Sie, wo sich die API-Analysedatei befindet? Ich möchte jede Warnung aus meiner App
ausrotten
Wenn iTunes Connects also anzeigt, dass der Build hochgeladen wurde, bedeutet dies, dass er trotz dieser Fehlermeldung durchlaufen wurde? Und jetzt warte ich nur noch auf ihre Zustimmung?
Jay
10

Nachdem ich dieses Problem bei meinem ersten Swift-Projekt zum ersten Mal angesprochen habe, scheint die häufigste Antwort auf diese Frage jetzt zu sein:

Wenn Sie Swift 2.x und XCode 7 verwenden, wird dieser Fehler angezeigt. Ignoriere es einfach.

[UPDATE: Der Rollout von XCode 7.3 und iOS 9.3 scheint dieses Problem behoben zu haben!]

Richard
quelle
Ich verwende Swift 2.1 in Xcode 7.3 und dies scheint der Fall zu sein. Hoffentlich werden sie es bald beheben.
Dai
jap, ich benutze auch Swift 2.1.1 und xCode 7.2.1, um diese Informationen zu erhalten ... ich werde dich wissen lassen, ob es erfolgreich ist.
HitEmUp
1

Hier ist eine einfache Möglichkeit, sie zu umgehen ... Speichern Sie den Selektornamen wie "dlroWolleH" in umgekehrter Reihenfolge und kehren Sie dann die Zeichenfolge um, bevor Sie die Methode aufrufen.

Wenn Apple dies versteht, können Sie sie verschlüsseln.

Mike Crawford
quelle
48
Oder Sie können den Überprüfungsrichtlinien folgen und keine private API verwenden.
Maciej Swic
Das wird nichts aufhalten. Sie können erkennen, ob die Methode von der Methode selbst aufgerufen wird. Nicht von dem Selektornamen, den Sie verwenden.
Nicktones
2
@nicktones Es ist möglich, die privaten Methoden erst zu einem späteren Zeitpunkt aufzurufen, z. B. nachdem Ihre App genehmigt wurde
powerj1984