2012-04-18 12 views
5

Da der iOS-Simulator ein Simulator ist, warum muss ich speziell dafür bauen? Ist das nicht der Sinn eines Simulators, dass er den Code real in einer Art VM/Sandbox ausführt?Wie unterscheidet sich das Erstellen von iOS-Geräten und Simulatoren?

Worin bestehen die tatsächlichen Unterschiede in der Funktionsweise von Geräten/Simulatoren und wie unterscheiden sich die resultierenden integrierten Anwendungen?

Antwort

6

Eine Anwendung nativ auf einem iOS-Gerät ist ein ARM-Programm ausgeführt wird. Eine Anwendung, die im iOS-Simulator ausgeführt wird, ist jedoch ein gewöhnliches 32-Bit-Mac OS X-Programm (i386-Architektur) . Mit anderen Worten simuliert der Simulator ein iOS-Gerät nicht bis auf die Hardwareebene. Es bietet eine originalgetreue Kopie der iOS-Umgebung, die auf nativ auf dem Mac neu implementiert wurde.

+0

So ist es buchstäblich für eine andere Architektur zusammengestellt. In diesem Fall ist es komisch, dass einige Bibliotheken, die ich verwende, die Binärdateien des Simulators/Geräts an den gleichen Ort mit den gleichen Namen setzen - also verliere ich jedes Mal, wenn ich den Simulator baue, die Geräteversion und umgekehrt. Und wie läuft eine App mit vorgefertigten Abhängigkeitsbibliotheken (.a-Dateien) sowohl auf dem Simulator als auch auf dem Gerät? –

+0

@john Sie können Lipo-Tool verwenden, die mit Xcode kommt, um ein Fett (funktioniert für Gerät und Simulator) binär. – Vignesh

+0

# machen einen neuen Ausgabeordner mkdir -p $ {project_dir}/build/$ {} BUILD_STYLE -iphoneos/DTUtilities # kombinieren lib Dateien für verschiedene Plattformen in einem Lipo -create „$ {project_dir}/build/$ {BUILD_STYLE} -iphoneos/libDTUtilities.a "" $ {PROJECT_DIR}/build/$ {BUILD_STYLE} -Handelsimulator/libDTUtilities.a "-output" $ {PROJECT_DIR}/build/$ {BUILD_STYLE} -iphoneos/DTUtilities/libDTUtilities- $ {BUILD_STYLE} .a " – Vignesh

6

Der Simulator-Build verwendet den i386-Befehlssatz, da dieser von Ihrem Mac verwendet wird.

Wenn Sie für ein iOS-Gerät erstellen, erstellen Sie entweder die Armv6- oder Armv7-Befehlssätze.

Der Punkt des Simulators ist so, dass Sie einige schnelle Tests auf Ihrem Mac durchführen können, ohne ein Gerät verwenden zu müssen.

Um mehr über Befehlssätze zu lernen: http://en.wikipedia.org/wiki/Instruction_set

+0

Simulatoren geben niemals Speicherwarnungen. Aber verschiedene Geräte haben unterschiedliche Speicher. Um eine gute App zu erstellen, müssen wir sie sowohl im Simulator als auch in den Geräten testen. Auschecken für die gleiche Frage [link] (http://stackoverflow.com/questions/380062/iphone-device-vs-iphone-simulator) –

1

Der Simulator und das Gerät sollte den gleichen Code immer gleich laufen, dennoch gibt es einige Probleme, die man sich vorstellen sollte.

  1. Der Simulator nicht alle Funktionen ausführen kann, die das Gerät ausführen kann, zum Beispiel der Simulator mit einer Kamera, ist die GPS-Daten nicht vorhanden nicht interagieren (aber Sie einen festen Standort aus den Optionen festlegen können), und Es gibt nur wenige andere Dinge in dieser Richtung.

  2. Der Simulator kann verwendet werden, um Ihren Code und Ihre Funktionalität viel schneller zu überprüfen, als Ihren Code auf dem Gerät zu speichern, trotzdem verwendet der Simulator den Speicher und die CPU Ihres Computers, was bedeutet, dass er nicht die Leistung eines realen Gerätes widerspiegelt Gerät, Geschwindigkeit und Speicher.

Gute Praxis wäre meist zu testen und zu entwickeln, auf dem Simulator, wenn Ihr Code und stabil und arbeitet wie geplant - es ist Zeit, es auf dem Gerät selbst für Aufführungen und andere Fragen zu prüfen, die gerätespezifisch sind.

Ich kann mehr über das Thema, aber ich dies ist eine schnelle Antwort auf Ihre Frage.

Verwandte Themen