针对iOS设备和模拟器的构建实际上有何不同



既然 iOS 模拟器是模拟器,为什么我需要专门为它构建?模拟器的重点不是它在某种 VM/沙盒中运行真正的代码吗?

那么,为设备/模拟器构建工作的方式以及最终构建的应用程序有何不同,实际差异是什么?

在 iOS 设备上本机运行的应用程序是 ARM 程序。 但是,在iOS模拟器中运行的应用程序是普通的 32 位(i386 体系结构)Mac OS X 程序。换句话说, 模拟器不会模拟 iOS 设备到硬件级别。 它提供了 iOS 环境的忠实副本,重新实现为 在 Mac 上本机运行。

模拟器构建使用 i386 指令集,因为这是您的 Mac 使用的指令集。

当您为 iOS 设备构建时,您正在为 armv6 或 armv7 指令集构建。

模拟器的目的是您可以在Mac上进行一些快速测试,而无需使用设备。

要了解有关指令集的更多信息:http://en.wikipedia.org/wiki/Instruction_set

模拟器和设备应该运行相同的代码,但是应该注意的问题很少。

  1. 模拟器无法运行设备可以运行的所有功能,例如模拟器不与相机交互,GPS数据不存在(但您可以从选项中设置固定位置),并且几乎没有其他事情沿着这些行。

  2. 模拟器可用于检查您的代码和功能比在开发时将代码转储到设备上要快得多,但是模拟器正在使用您的计算机内存和 CPU,这意味着它不能反映真实设备上的性能,速度和内存明智。

好的做法是主要在模拟器上进行测试和开发,当您的代码稳定并按计划工作时 - 是时候在设备本身上测试它的性能和其他特定于设备的问题了。

我可以详细阐述这个话题,但我这是对你问题的快速回答。

最新更新