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