我最近搬到了一家新公司,并试图掌握项目中的Xcode设置。目前该项目正在编制“armv7 armv7s arm64 armv8 i386”。有人可以解释是否有必要编译i386以及为什么?
如果删除它,我的项目编译好了。需要注意的一点是,我链接到使用相同体系结构编译的c ++ lib。 i386是用于模拟器还是任何特定的iOS设备?
由于
答案 0 :(得分:8)
在iOS模拟器中运行您的应用程序需要i386版本,该模拟器在OS X上本机运行并使用底层x86 / x64硬件。这比模拟ARM要快。
答案 1 :(得分:0)
您不需要在架构构建设置中专门指定i386。理想情况下,您应该将ARCHS和VALID_ARCHS保留为默认值,一切都应该“正常工作”。您只会看到列出的手臂架构,但正确的事情发生在为SIM卡构建的幕后。
为模拟器构建时,您的项目将针对i386,x86_64或两者构建(取决于部署目标以及ARCHS和ONLY_ACTIVE_ARCH构建设置)。在模拟器中,32位设备只允许运行i386代码,64位设备可以运行i386和x86_64b代码(就像真实设备一样,但使用intel而不是arm)。