iOS的App现在基本都是用llvm在编译,Xcode也提供了各种设置帮助你进行编译参数的设定。里面有一项就是设定编译的体系结构,涉及到的参数包括:Architectures、Valid Architectures和Build Active Architecture Only。
有些新手对这几个参数往往不知道怎么选择,这里简单介绍一下。
Architectures:这是指你想支持的指令集,比如:armv7,armv7s,或者可以用$(ARCHS_STANDARD_32_BIT)这样的参数
Valid Architectures:这是指你即将编译的指令集
Build Active Architecture Only:是否只编译当前设备适用的指令集(如果这个参数设为YES,那么如果你用iPhone 6调试,最终生成的一个支持arm64指令集的Binary;如果你用iPhone4编译,最终生成一个支持armv7指令集的Binary,所以一般在DEBUG模式下设为YES,RELEASE设为NO)
这里,我们编译最终支持的指令集是Architectures和Valid Architectures两个参数的交集。
另外,列一下目前常见iOS设备的指令集:
ARMv8/ARM64: iPhone 6(Plus), iPhone 5s, iPad Air(2), Retina iPad Mini(2,3)
ARMv7s: iPhone 5, iPhone 5c, iPad 4
ARMv7: iPhone 3GS, iPhone 4, iPhone 4S, iPod 3G/4G/5G, iPad, iPad 2, iPad 3, iPad Mini
ARMv6: iPhone, iPhone 3G, iPod 1G/2G