在Mac上运行的iOS模拟器是i386架构,而不是armv7吗?

17

我有一些为armv7架构构建的静态库。当我尝试在iOS项目中使用它们并在iPhone 5.0模拟器上测试运行时,我会收到关于我的静态库中undefined symbols for architecture i386的错误提示。

所以我猜这意味着iPhone模拟器想要编译为i386的库?那模拟器的用途是什么-为什么它不模拟armv7架构呢?

那么,我只能连接物理iOS设备并运行来测试我的静态库吗?

还是我理解错了?


这个问题是为什么Android项目使用模拟器QEMU的原因。它比iOS模拟器慢得多。 - Kevin Vermeer
4个回答

29
我猜这意味着iPhone模拟器需要为i386编译的库?那么模拟器的意义是什么 - 为什么它不能模拟armv7架构呢?
你已经回答了自己的问题。它是一个模拟器,而不是仿真器。因此,它是一个在i386架构上运行的Mac OSX程序。如果你也为i386编译你的静态库,你就可以在模拟器上使用它们。

9

我不是很确定,但是 i386 是用于模拟器,而 armv7 是用于连接到您的机器上的设备。


4

您实际上可以通过使用i386架构的Xcode命令行工具编译应用程序(还有一种方法是通过修改构建设置在Xcode UI中运行它)。

xcodebuild -sdk iphonesimulator6.1 -arch i386 VALID_ARCHS="i386 armv7 armv7s" clean install

在您具有projectName.xcodeproj文件的目录中运行此命令。
以下是脚本的详细说明:
-sdk iphonesimulator6.1 // Build the app on iPhone simulator 6.1
-arch i386 // Build your app using i386 architecture
VALID_ARCHS="i386 armv7 armv7s" // Specify these architectures are valid
clean install // Clean all the builds then re-build and install

谢谢,这对我在提交对象进行审核时符合 Facebook 开放图谱的新要求非常有用。 - estemendoza

0

如果你想尝试使用i386模拟器,只需选择iPhone 5。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接