2015-06-08 10 views
6

zu kompilieren Ich bin kürzlich in eine neue Firma gezogen und versuche, die Xcode-Einstellungen in einem Projekt in den Griff zu bekommen. Derzeit wird das Projekt für "armv7 armv7s arm64 armv8 i386" kompiliert. Könnte jemand bitte erklären, ob es notwendig ist, für i386 zu kompilieren und warum?Wann ist es notwendig, für i386 auf iOS

Mein Projekt kompiliert ok, wenn ich es entferne. Eine Sache, die zu beachten ist, ist, dass ich mit einer C++ - Bibliothek verlinke, die mit den gleichen Architekturen kompiliert ist. Wird i386 für den Simulator oder bestimmte iOS-Geräte verwendet?

Dank

Antwort

8

Die i386-Version wird benötigt, um Ihre Anwendung im iOS Simulator zu laufen, die auf OS X nativ läuft und verwenden die zugrunde liegende x86/x64-Hardware. Dies ist viel schneller als ARM zu emulieren.

+1

Eine kurze Anmerkung: Nicht alle Bibliotheken von Drittanbietern laufen unter der SIM, was bedeutet, dass Sie irgendwann auf eine App stoßen, wo Sie nur auf dem Telefon debuggen und die i386-Option aus der Liste entfernen müssen. –

0

Sie sollten i386 nicht explizit in der Build-Einstellung Ihrer Architektur angeben. Im Idealfall sollten Sie ARCHS und VALID_ARCHS als Standardwerte belassen und alles sollte "einfach funktionieren". Sie sehen nur die Armarchitekturen aufgelistet, aber das Richtige passiert hinter den Kulissen, wenn Sie für den Sim bauen.

Beim Erstellen des Simulators wird Ihr Projekt für i386, x86_64 oder beide (abhängig vom Implementierungsziel und den ARCHS- und ONLY_ACTIVE_ARCH-Buildeinstellungen) erstellt. Im Simulator dürfen 32-Bit-Geräte nur i386-Code ausführen, und 64-Bit-Geräte können sowohl den i386- als auch den x86_64b-Code ausführen (genau wie bei echten Geräten, aber mit Intel anstatt mit Arm).