Architectures
在項(xiàng)目中你想要xcode編譯的目標(biāo)設(shè)備列表 比如armv7雹有、armv7s、arm64 臼寄。armv7等這些是ARM CPU的不同指令集霸奕,原則上是向下兼容的。例如iPhone4S CPU支持armv7, 但它同時(shí)兼容armv6吉拳,只是使用armv6指令可能無(wú)法充分發(fā)揮它的特性质帅。
- Valid Architectures 設(shè)置里默認(rèn)為 Standard architectures (armv7,armv7s,arm64)
原因:使用 standard architectures (including 64-bit) (armv7,armv7s,arm64) 參數(shù),則打的包里面有32位、64位兩份代碼煤惩,
在iPhone5s( iPhone5s的cpu是64位的 )下嫉嘀,會(huì)首選運(yùn)行64位代碼包,
其余的iPhone( 其余iPhone都是32位的,iPhone5c也是32位 )魄揉, 只能運(yùn)行32位包剪侮,
但是包含兩種架構(gòu)的代碼包,只有運(yùn)行在ios6洛退,ios7系統(tǒng)上瓣俯。
這也就是說(shuō),這種打包方式不狮,對(duì)手機(jī)幾乎沒(méi)啥要求降铸,但是對(duì)系統(tǒng)有要求,即ios6以上摇零。
而使用 standard architectures (armv7,armv7s) 參數(shù)推掸, 則打的包里只有32位代碼, iPhone5s的cpu是64位驻仅,但是可以兼容32位代碼谅畅,即可以運(yùn)行32位代碼。但是這會(huì)降低iPhone5s的性能噪服。 其余的iPhone對(duì)32位代碼包更沒(méi)問(wèn)題毡泻, 而32位代碼包,對(duì)系統(tǒng)也幾乎也沒(méi)什么限制粘优。
所以總結(jié)如下:
要發(fā)揮iPhone5s及以上機(jī)型的64位性能仇味,就要包含64位包,那么系統(tǒng)最低要求為ios6雹顺。 如果要兼容ios5以及更低的系統(tǒng)丹墨,只能打32位的包,系統(tǒng)都能通用嬉愧,但是會(huì)喪失iPhone5s的性能贩挣。
build architecture only
設(shè)置為NO時(shí),編譯支持的多個(gè)版本没酣,如: armv7, armv7s, arm64
設(shè)置為YES時(shí)王财,編譯出的版本是可以向下進(jìn)行兼容的,用iPhone4編譯出來(lái)的是armv7版本的裕便,iPhone5(armv7s)也可以運(yùn)行绒净,但是armv6 (iPhone 2G/3G,iPod 1G/2G)的設(shè)備就不能運(yùn)行了
所以在調(diào)試的時(shí)候比較適宜設(shè)置 Build Active Architecture Only 位 YES偿衰,這樣只編譯一個(gè)版本疯溺,速度會(huì)比較快论颅;
在發(fā)布的時(shí)候哎垦,需要設(shè)置 Build Active Architecture Only 位 NO囱嫩,這樣以支持多種設(shè)備
設(shè)備版本:
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開(kāi)始的iPhone,iPad Air開(kāi)始的iPad等新設(shè)備
模擬器:iphone4s-5 : i386 郑口, iphone5s-6plus : x86_64
所以鸳碧,一般debug的時(shí)候可以選擇設(shè)置為yes,這樣只編譯一個(gè)版本犬性,速度會(huì)比較快瞻离,release的時(shí)候要改為no,以適應(yīng)不同設(shè)備