Ich versuche, eine App auf dem Simulator laufen zu lassen, die vorher einige Probleme hatte. Wir haben nicht libjpeg.a für i386
gebaut, aber es hat x86_64
. Dies ist die einzige verbleibende Abhängigkeit, aber ich frage mich, warum ich eigentlich i386
Symbole brauche, wenn ich auf einem x86_64
mac laufe.Warum benötigt der iOS-Simulator i386- und x86_64-Symbole, obwohl ich nur auf einem x86_64-System bin?
Antwort
Der iOS-Simulator kann Ihre App im 32- und 64-Bit-Modus ausführen. Auf diese Weise können Sie viele 64-Bit-Probleme lösen und sicherstellen, dass sie sowohl für armv7 als auch für arm64 bereit sind. Dazu kompiliert es Ihre App für i386 und x86_64 und benötigt die Bibliotheken für beide Architekturen.
tatsächlich i386 Architektur ist für iPhone-Simulator, wo als x86_64 Architektur für iPad Simulatoren ist, sind beide 32 und 64-Bit-kompatibel.
iOS-Apps müssen auf vielen verschiedenen Architekturen auszuführen:
arm7: Used in the oldest iOS 7-supporting devices
arm7s: As used in iPhone 5 and 5C
arm64: For the 64-bit ARM processor in iPhone 5S
i386: For the 32-bit simulator
x86_64: Used in 64-bit simulator
Ich kenne die verschiedenen Architekturen. Aber meine Frage war mehr über den speziellen Fall, warum Builds für beide Architektur einfach für einen Simulator-Build notwendig waren. Es scheint eine Vielzahl von Gründen dafür zu geben (z. B. Ihre App ist universell für iPad und iPhone, aber Xcode SDK verwendet tatsächlich ältere 32-Bit-Architektur, um ältere Umgebungen zu emulieren, da sie nicht auf 64-Bit aktualisiert wurden). –
Dank ja, ich dachte, das aus nur nach der Einlieferung. Ich dachte mir, dass ich zumindest in der Lage wäre, ein 64-Bit-virtuelles Ziel ohne 32-Bit-Symbole zu implementieren, und dass Xcode möglicherweise nur versuchen würde, 32 Bit bei der Bereitstellung an ein 32-Bit-virtuelles Ziel zu verbinden. Ich bin in der Zwischenzeit herumgekommen, indem ich nur arm7 aus den Build-Einstellungen entfernt habe. Trotzdem haben Sie Recht und verdienen die richtige Antwort. –