最近做項目過程遇到一個問題:
涉及到這個屬性:Build Active Architecture Only
Yes 、No的區別:
設置為yes,是只編譯當前的architecture版本,是為了編譯速度更快,一般我們在debug環境下這樣設置。
而設置為no時,系統會編譯所有architecture下的版本。
這里設備對應的architecture(摘自網絡):
armv6:iPhone 2G/3G,iPod 1G/2G
armv7:iPhone 3GS/4/4s,iPod 3G/4G,iPad 1G/2G/3G
armv7s:iPhone5, iPod5
這里有個向下兼容的概念:
就是說,編譯出的版本是向下兼容的,比如你設置此值為yes,用iphone4編譯出來的是armv7版本的,iphone5也可以運行,但是armv6的設備就不能運行。
(因為armv7s是在armv7后面,armv7可以了,armv7s也就同時可以了)
所以,有時候我們會看到類似這樣一種錯:
乍一看,是i386不支持的問題,但我這里的原因是這樣:(各位遇到此問題的可嘗試檢查一下這里)
我引用的第三方類庫里面設置的Release下位Yes,而我自己的項目Release下是No,所以造成這樣的錯誤,兩種解決辦法:
1、將自己的項目Release下也設置成Yes。
2、修改引用類庫,將Release下改成No即可。(這里類庫是我自己寫的,所以修改比較方便)
推薦第二種方法。
建議:
一般debug的時候可以選擇設置為yes,release的時候要改為no,以適應不同設備。
PS:這里如果release也設置成Yes,上線以后會不會有問題,本人還未測試,望有知道答案的留言下~~