xcode的Architectures、build architecture only属性

Architectures

在项目中你想要xcode编译的目标设备列表 比如armv7、armv7s、arm64 。armv7等这些是ARM CPU的不同指令集,原则上是向下兼容的。例如iPhone4S CPU支持armv7, 但它同时兼容armv6,只是使用armv6指令可能无法充分发挥它的特性。

  • Valid Architectures 设置里默认为 Standard architectures (armv7,armv7s,arm64)
    原因:使用 standard architectures (including 64-bit) (armv7,armv7s,arm64) 参数,则打的包里面有32位、64位两份代码,
    在iPhone5s( iPhone5s的cpu是64位的 )下,会首选运行64位代码包,
    其余的iPhone( 其余iPhone都是32位的,iPhone5c也是32位 ), 只能运行32位包,
    但是包含两种架构的代码包,只有运行在ios6,ios7系统上。
    这也就是说,这种打包方式,对手机几乎没啥要求,但是对系统有要求,即ios6以上。
    而使用 standard architectures (armv7,armv7s) 参数, 则打的包里只有32位代码, iPhone5s的cpu是64位,但是可以兼容32位代码,即可以运行32位代码。但是这会降低iPhone5s的性能。 其余的iPhone对32位代码包更没问题, 而32位代码包,对系统也几乎也没什么限制。
    所以总结如下
    要发挥iPhone5s及以上机型的64位性能,就要包含64位包,那么系统最低要求为ios6。 如果要兼容ios5以及更低的系统,只能打32位的包,系统都能通用,但是会丧失iPhone5s的性能。
build architecture only

设置为NO时,编译支持的多个版本,如: armv7, armv7s, arm64
设置为YES时,编译出的版本是可以向下进行兼容的,用iPhone4编译出来的是armv7版本的,iPhone5(armv7s)也可以运行,但是armv6 (iPhone 2G/3G,iPod 1G/2G)的设备就不能运行了
所以在调试的时候比较适宜设置 Build Active Architecture Only 位 YES,这样只编译一个版本,速度会比较快;
在发布的时候,需要设置 Build Active Architecture Only 位 NO,这样以支持多种设备

设备版本:

armv6:iPhone 2G/3G,iPod 1G/2G
armv7:iPhone 3GS/4/4s,iPod 3G/4G,iPad 1G/2G/3G
armv7s:iPhone5-5c, iPod5
arm64: iPhone5s开始的iPhone,iPad Air开始的iPad等新设备
模拟器:iphone4s-5 : i386 , iphone5s-6plus : x86_64

所以,一般debug的时候可以选择设置为yes,这样只编译一个版本,速度会比较快,release的时候要改为no,以适应不同设备

摘自https://www.cnblogs.com/Hakim/p/5614805.html

你可能感兴趣的:(xcode的Architectures、build architecture only属性)