
先說解決方法:將箭頭所指的"YES"改成"NO"即可,當(dāng)然你也可以設(shè)置為<Mutiple Values>,防止發(fā)布的時候忘了設(shè)置。

原因如下:
Architectures
這代表,在這個項(xiàng)目里你想要Xcode編譯的目標(biāo)設(shè)備列表。
Valid Architectures
還不是太明確這個設(shè)置的意圖,但是一般來說是不需要更改的,和Architectures一樣就可以。
使用standard architectures (including 64-bit)(armv7,armv7s,arm64)參數(shù),則打的包里面有32位、64位兩份代碼,在iPhone5s(iPhone5s的cpu是64位的:armv6)下,會首選運(yùn)行64位代碼包, 其余的iPhone(其余iPhone都是32位的,iPhone5c也是32位), 只能運(yùn)行32位包,但是包含兩種架構(gòu)的代碼包,只有運(yùn)行在ios6,ios7系統(tǒng)上。
這也就是說,這種打包方式,對手機(jī)幾乎沒啥要求,但是對系統(tǒng)有要求,即ios6以上。
而使用standard architectures (armv7,armv7s)參數(shù), 則打的包里只有32位代碼, iPhone5s的cpu是64位,但是可以兼容32位代碼,即可以運(yùn)行32位代碼。但是這會降低iPhone5s的性能。 其余的iPhone對32位代碼包更沒問題, 而32位代碼包,對系統(tǒng)也幾乎也沒什么限制。
所以總結(jié)如下:
要發(fā)揮iPhone5s的64位性能,就要包含64位包,那么系統(tǒng)最低要求為ios6。 如果要兼容ios5以及更低的系統(tǒng),只能打32位的包,系統(tǒng)都能通用,但是會喪失iPhone5s的性能。那么怎么解決呢?
Build Active Architecture Only
這個屬性設(shè)置為yes,是為了debug的時候編譯速度更快,它只編譯當(dāng)前的architecture版本;而設(shè)置為no時,會編譯所有的版本。
以下是設(shè)備對應(yīng)的architecture:
armv6:iPhone 2G/3G,iPod 1G/2G
armv7:iPhone 3GS/4/4s,iPod 3G/4G,iPad 1G/2G/3G
armv7s:iPhone5, iPod5
arm64:iPhone5s,ipad air,ipad mini2
編譯出的版本是向下兼容的,比如你設(shè)置此值為yes,用iphone4編譯出來的是armv7版本的,iphone5也可以運(yùn)行,但是armv6的設(shè)備就不能運(yùn)行。
所以,一般debug的時候可以選擇設(shè)置為yes,release的時候要改為no,以適應(yīng)不同設(shè)備。
通過對以上參數(shù)配置的了解,我解決了問題。
xcode5.1你的程序如果支持了arm64,那么你的所有靜態(tài)庫或者framework都要支持才可以,所以你要重新編譯一遍。