2012-04-18 70 views
5

由於iOS模擬器是一個模擬器,爲什麼我需要爲它專門構建?模擬器不是它在某種虛擬機/沙箱中運行真實代碼的關鍵嗎?iOS設備和模擬器的建築實際上有何不同?

那麼設備/模擬器的工作方式和生成的應用程序有何不同,實際的區別是什麼?

回答

6

在iOS設備上本地運行的應用程序是一個ARM程序。 但是,在iOS模擬器中運行的應用程序是普通的32位(i386架構)Mac OS X程序。換句話說,模擬器不會將iOS設備模擬到硬件級別。 它提供了一個忠實的iOS環境副本,重新實現爲在Mac上本地運行的 。

+0

所以它是從字面上編譯爲一個不同的體系結構。在那種情況下,我使用的某些庫將模擬器/設備二進制文件放在同一個名稱相同的位置是很奇怪的 - 所以每次構建模擬器時都會丟失設備版本,反之亦然?在模擬器和設備上如何運行帶有預建依賴庫(.a文件)的應用程序? – 2012-04-18 09:09:07

+0

@john您可以使用xcode附帶的lipo工具來製作胖(適用於設備和模擬器)二進制文件。 – Vignesh 2012-04-18 09:10:41

+0

#創建一個新的輸出文件夾 的mkdir -p $ {} PROJECT_DIR /建築/ $ {} BUILD_STYLE -iphoneos/DTUtilities #結合各種平臺的lib文件合併成一個 脂 - 創建「$ {} PROJECT_DIR /建築/ $ {BUILD_STYLE} -iphoneos/libDTUtilities.a「」$ {PROJECT_DIR}/build/$ {BUILD_STYLE} -iphonesimulator/libDTUtilities.a「-output」$ {PROJECT_DIR}/build/$ {BUILD_STYLE} -iphoneos/DTUtilities/libDTUtilities- $ {} BUILD_STYLE .A」 – Vignesh 2012-04-18 09:12:01

6

模擬器構建使用i386指令集,因爲這是你的mac使用的。

當您爲iOS設備構建時,您正在構建armv6或armv7指令集。

模擬器的要點是,您可以在Mac上做一些快速測試,而無需使用設備。

要了解更多有關指令集:http://en.wikipedia.org/wiki/Instruction_set

+0

模擬器從不給內存警告。但不同的設備有不同的內存,所以要創建一個好的應用程序,我們必須在模擬器和設備上進行測試。檢查出相同的問題[鏈接](http://stackoverflow.com/questions/380062/iphone-device-vs-iphone-simulator) – 2012-04-18 08:59:07

1

模擬器和設備應該運行相同的代碼,但有幾個問題需要注意。

  1. 模擬器不能運行,這設備可以運行所有功能,例如模擬器不與相機相互作用,GPS數據不存在(但可以設置從選項的固定位置),和除此之外還有其他幾件事情。

  2. 模擬器可用於檢查您的代碼和功能,比開發時在設備上轉儲代碼要快得多,但模擬器正在使用計算機的內存和CPU,這意味着它不能反映真實的性能設備,速度和內存明智。

好的做法是測試和大多發展在模擬器上,當你的代碼,穩定和工作刨 - 這是時間來測試其設備本身的性能和其他問題是指特定設備上。

我可以詳細說明這個話題,但我對你的問題很快回答。

相關問題