Ich werde hier meine 2 Cent hinzufügen (auf eine weniger beängstigende Weise :-). Ich habe eine ganze Reihe von Fat Libraries von Anbietern gefunden, die (aus irgendeinem Grund) nicht normal funktionieren, indem sie dem Frameworks
von Apple dokumentierten Verzeichnis hinzugefügt werden . Die einzige Möglichkeit, sie zum Laufen zu bringen, besteht darin, .framekwork
rechts in das Projektverzeichnis zu ziehen und das Embedded Frameworks
und Link Binary with Libraries
manuell in den Build-Einstellungen zu verknüpfen . Dies scheint jedoch ohne Probleme funktioniert zu haben, da sie bei jeder Fat Library mit den externen Simulator-Architekturen i386
und x86_64
zusammen mit den arm
Architekturen geliefert werden.
Eine schnelle Möglichkeit, die Architekturen in der Fettbibliothek zu überprüfen, ist
$ cd 'Project_dir/Project'
$ lipo -info 'YourLibrary.framework/YourLibExec`
Welches sollte eine Ausgabe so etwas spucken
Architectures in the fat file: YourLibrary.framework/YourLibExec are: i386 x86_64 armv7 arm64
Dies bestätigt, dass Sie vor dem Hochladen von iTunesConnect Archival das Fett (nämlich i386
& x86_64
) aus Ihrem Framework "entfernen" müssen, wodurch diese Architekturen nicht zulässig sind (da sie für iOS nicht unterstützt werden).
Jetzt bieten alle Antworten (oder zumindest einige der Antworten) hier diese wunderbaren Ausführungsskripte, von denen ich sicher bin, dass sie wirklich gut funktionieren, aber nur, wenn sich Ihr Framework im Frameworks
Verzeichnis befindet. Wenn Sie kein Shell-Skript-Junkie sind, funktionieren diese Skripte ohne Änderungen nicht für das oben erläuterte Szenario. Es gibt jedoch eine sehr einfache Möglichkeit, die i386
& x86_64
Architekturen aus dem Framework zu entfernen.
Öffnen Sie das Terminal im Verzeichnis Ihres Projekts.
Wechseln Sie direkt in das .framekwork
, wie
cd YourProjectDir/YourProject/YourLibrary.framework
Führen Sie die Befehlsreihe wie unten gezeigt aus.
$ mv YourLibrary YourLibrary_all_archs
$ lipo -remove x86_64 YourLibrary_all_archs -o YourLibrary_some_archs
$ lipo -remove i386 YourLibrary_some_archs -o YourLibrary
$ rm YourLibrary_all_archs YourLibrary_some_archs
Ein paar Dinge, die hier zu beachten sind - lipo -remove
müssen einmal ausgeführt werden, damit jede Architektur entfernt wird. lipo
Ändert die Eingabedatei nicht, es wird nur eine Datei erstellt, sodass Sie sie lipo -remove
einmal für x86_64
und ausführen müssen i386
. Die obigen Befehle tun dies einfach, indem Sie zuerst die ausführbare Datei umbenennen und schließlich die gewünschten Bögen entfernen und dann die verbleibenden Dateien bereinigen. Und das war's, jetzt sollte beim Hochladen der Application Loader-Archivierung auf iTunesConnect ein grünes Häkchen angezeigt werden.
Zu beachtende Dinge : Die oben genannten Schritte sollten nur während des Produktionsaufbaus ausgeführt werden, da .framework
die Simulatorarchitekturen entfernt werden und Builds auf Simulatoren nicht mehr funktionieren (was erwartet wird). In einer Entwicklungsumgebung sollte es nicht erforderlich sein, die Architekturen aus der .framework
Datei zu entfernen, da Sie sowohl auf dem Simulator als auch auf einem physischen Gerät testen möchten. Wenn sich Ihre Fettbibliothek im Frameworks
Ordner des Projekts befindet, sehen Sie sich bitte die akzeptierte Antwort an.