iOS Build Active Architecture Only 屬性的理解(及 not found for architecture i386 的解決方案)

最近作項目過程遇到一個問題:網絡

涉及到這個屬性:Build Active Architecture Onlyiphone

 

Yes 、No的區別:測試

設置爲yes,是隻編譯當前的architecture版本,是爲了編譯速度更快,通常咱們在debug環境下這樣設置。ui

而設置爲no時,系統會編譯全部architecture下的版本。spa

 

這裏設備對應的architecture(摘自網絡):debug

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的設備就不能運行。blog

(由於armv7s是在armv7後面,armv7能夠了,armv7s也就同時能夠了)ip

 

因此,有時候咱們會看到相似這樣一種錯:it

乍一看,是i386不支持的問題,但我這裏的緣由是這樣:(各位遇到此問題的可嘗試檢查一下這裏)編譯

我引用的第三方類庫裏面設置的Release下位Yes,而我本身的項目Release下是No,因此形成這樣的錯誤,兩種解決辦法:

一、將本身的項目Release下也設置成Yes。

二、修改引用類庫,將Release下改爲No便可。(這裏類庫是我本身寫的,因此修改比較方便)

推薦第二種方法。

 

建議:

通常debug的時候能夠選擇設置爲yes,release的時候要改成no,以適應不一樣設備。

 

PS:這裏若是release也設置成Yes,上線之後會不會有問題,本人還未測試,望有知道答案的留言下~~

相關文章
相關標籤/搜索