Xcode的Architectures、Valid Architectures和Build Active Architecture Only屬性


Architectures 
這代表,在這個項目里你想要Xcode編譯的目標設備列表。 
Valid Architectures 
還不是太明確這個設置的意圖,但是一般來說是不需要更改的,和Architectures一樣就可以。

在Xcode5.1里的  Valid Architectures  設置里,  默認為 Standard architectures(armv7,armv7s,arm64),如果你想改的話,自己在other中更改。

原因解釋如下: 
使用  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 Active Architecture Only

這個屬性設置為yes,是為了debug的時候編譯速度更快,它只編譯當前的architecture版本。 
而設置為no時,會編譯所有的版本。 
這個是設備對應的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 
編譯出的版本是向下兼容的,比如你設置此值為yes,用iphone4編譯出來的是armv7版本的,iphone5也可以運行,但是armv6的設備就不能運行。 
所以,一般debug的時候可以選擇設置為yes,release的時候要改為no,以適應不同設備。

通過對以上參數配置的了解,我解決了問題。

xcode5.1你的程序如果支持了arm64,那么你的所有靜態庫或者framework都要支持才可以,所以你要重新編譯一遍。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM