Xcode Build Settings - Architectures

从 Xcode 6 开始,Apple 开始在标准架构中弃用 armv7s 架构,具体差异请看下图。

Xcode 5.1.1:

Xcode 6.1:

armv7s 架构指的是用于 iPhone 5 和 5C 等这些设备上的 A6 处理器。

包含 armv7s 的原因将会是边际向后兼容。但 armv7 和 armv7s 指令集之间的差异是次要的。因此如果你选择不加入 armv7s, 以 armv7 目标编译的机器码仍然能良好地运行在 32 位的 A6 设备上,并且几乎察觉不出性能差异。在 iOS Support Matrix 里有一个对 iOS 各种设备所支持架构的讨论非常棒的文档。

以下是 Xcode 个版本 Stand Architecture 列表:

                |      Standard Architectures
-------------------------------------------------------------
Xcode 4.2       |     armv7
Xcode 4.5       |     armv7  armv7s
Xcode 5.1.1     |     armv7  armv7s  arm64
Xcode 6.0.1     |     armv7          arm64

从列表中我们可以看到 armv7s 在 4.5 中开始作为标准架构的一部分,但从 6.0 开始移除了。很明显,armv7s 只是作为一个过度性的指令集,被 armv64 取代是必然的。现在我们才真正的领悟了标准意味着什么。

那这意味着没有 armv7s 架构的新 app 或提交的更新会在安装到某些设备上时发生崩溃吗?

我敢 99% 确定缺少 armv7s 不会导致那种事情发生,如果发生了,我建议提交个 bug 反馈给 Apple。