Xcode的Architectures、Valid Architectures和Build Active Architecture Only属性
轉(zhuǎn)自http://www.tuicool.com/articles/aeiaUr
Architectures?
這代表,在這個項目里你想要Xcode編譯的目標設備列表。?
Valid Architectures?
還不是太明確這個設置的意圖,但是一般來說是不需要更改的,和Architectures一樣就可以。
在Xcode5.1里的??Valid Architectures??設置里,??默認為?Standard architectures(armv7,armv7s,arm64),如果你想改的話,自己在other中更改。
原因解釋如下:?
使用??standard architectures (including 64-bit)(armv7,armv7s,arm64)?參數(shù),則打的包里面有32位、64位兩份代碼,?
在iPhone5s(?iPhone5s的cpu是64位的?)下,會首選運行64位代碼包,?
其余的iPhone(?其余iPhone都是32位的,iPhone5c也是32位?),?只能運行32位包,
但是包含兩種架構(gòu)的代碼包,只有運行在ios6,ios7系統(tǒng)上。?
這也就是說,這種打包方式,對手機幾乎沒啥要求,但是對系統(tǒng)有要求,即ios6以上。?
而使用??standard architectures (armv7,armv7s)?參數(shù),?則打的包里只有32位代碼,?iPhone5s的cpu是64位,但是可以兼容32位代碼,即可以運行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
這個屬性設置為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,以適應不同設備。
通過對以上參數(shù)配置的了解,我解決了問題。
xcode5.1你的程序如果支持了arm64,那么你的所有靜態(tài)庫或者framework都要支持才可以,所以你要重新編譯一遍。
?
?
更多參考http://my.oschina.net/shede333/blog/172785#OSC_h3_2 這個更好
轉(zhuǎn)載于:https://www.cnblogs.com/chancier/p/4127940.html
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的Xcode的Architectures、Valid Architectures和Build Active Architecture Only属性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode:104_Maximum
- 下一篇: 著名的小退问题