Arm是处理器,是移动设备上占用率最大的处理器。
armv6、armv7、armv7s、arm64都是arm处理器的指令集。通常指令是向下兼容的。在模拟器运行时,iOS模拟器运行的是x86指令集。只有在真机上,才会对执行arm指令集。
在Xcode中可以通过Architectures指定要编译的体系结构。如下图所示,主要包括了四个参数:Architectures、Build Active Architecture Only、Suppported Platforms、Vaild Architectures。
Architectures
Architectures:是指编译时支持的指令集,不同的设备对应不同的指令集,主要有(armv6、armv7、armv7s、armv8/arm64等),Architectures也可以理解为支持哪些设备,不同指令集对应的设备如下。原则上选择的Target多,会造成生成的包比较大。
armv8/arm64: iPhone 5S / 6 / 6Puls / 6S / 6s Plus, iPad Air(2), Retina iPad Mini(2, 3)
armv7s: iPhone 5, iPhone 5C, iPad 4, iPod5
armv7: iPhone 3GS / 4 / 4S, iPod 3G / 4G / 5G, iPad(1, 2, 3), iPad Mini
armv6: iPhone, iPhone 3G, iPod 1G / 2G
Build Active Architecture Only
Build Active Architecture Only:是否只编译当前设备适用的指令集。如果这个参数设置为YES,当我们用iPhone6进行调试时,会生成一个支持arm64指令集的Binary;如果用iPhone4进行编译,最终会生成一个支持armv7指令的Binary。设置为YES时,会只编译当前的Architecture版本,速度会更快,设置为NO时,会编译所有的版本,速度会慢,所以,我们一般在debug模式设置为YES,在release模式设置为NO。
Suppported Platforms
支持哪些平台,iOS设备、mac设备、tv设备、watch设备等。
Vaild
Architectures
限制可能被支持的指令集范围,生成的包里,是Valid Architectures与Architectures的交集。默认为Standard architectures(armv7,armv7s,arm64),如果你想改的话,自己在other中更改。一般不需要改,和Architectures一样就行。