返回

在架构混乱中理清头绪:揭秘 Xcode BuildSettings 中的架构选项

IOS

在 Xcode 的 BuildSettings 中,有关 Architectures 的选项往往令人困惑。各种参数名称和复杂的参数组合,让开发者们头痛不已。但是,只要深入了解每个架构参数的含义,解决相应的开发问题就变得轻而易举,只需要对这些参数进行增、删、改即可。

一、iOS 架构的基础

在 iOS 开发中,架构指的是可执行代码的指令集架构,它决定了代码在不同设备上的运行方式。

  • armv7: 用于较老的 32 位设备,如 iPhone 4s 和 iPad 2。
  • arm64: 用于较新的 64 位设备,如 iPhone 5s 和 iPad Air。
  • x86_64: 用于模拟器,模拟 64 位 Intel Mac 硬件。

二、Xcode 中的架构选项

Xcode 提供了以下架构选项:

  • Architectures: 指定可执行文件的目标架构。
  • Valid Architectures: 指定编译器允许的架构。
  • Excluded Architectures: 指定编译器不允许的架构。

三、理解架构选项

  • Architectures: 此选项指定要编译和链接的可执行文件的目标架构。
  • Valid Architectures: 此选项指定编译器可以编译的架构列表。如果 Architectures 选项未设置,则 Valid Architectures 的值将用于确定目标架构。
  • Excluded Architectures: 此选项指定编译器不允许编译的架构列表。如果 Architectures 或 Valid Architectures 选项未设置,则 Excluded Architectures 的值将用于确定目标架构。

四、用例:解决开发问题

通过增、删、改架构选项,我们可以解决各种开发问题:

  • 构建失败: 如果构建失败是因为架构不匹配,可以调整 Architectures、Valid Architectures 或 Excluded Architectures 选项。
  • 真机运行失败: 如果真机运行失败是因为架构不兼容,可以调整 Architectures 选项。
  • 真机调试失败: 如果真机调试失败是因为架构不匹配,可以调整 Architectures 或 Valid Architectures 选项。
  • 模拟器运行失败: 如果模拟器运行失败是因为架构不匹配,可以调整 Architectures、Valid Architectures 或 Excluded Architectures 选项。

五、避免常见错误

  • 不要同时设置 Architectures 和 Valid Architectures: 这可能会导致编译错误。
  • 不要在 Excluded Architectures 中包含 Architectures 中指定的架构: 这会导致构建失败。
  • 不要在 Valid Architectures 中包含 Excluded Architectures 中指定的架构: 这会导致编译错误。

六、示例代码

以下是针对不同场景的示例代码:

  • 构建通用二进制文件:
Architectures = armv7 arm64
  • 仅针对特定架构构建:
Architectures = arm64
Valid Architectures = arm64
  • 排除特定架构:
Valid Architectures = arm64 x86_64
Excluded Architectures = armv7