返回
在架构混乱中理清头绪:揭秘 Xcode BuildSettings 中的架构选项
IOS
2023-11-14 11:24:57
在 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