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


最近做項目過程遇到一個問題:

涉及到這個屬性: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,上線以后會不會有問題,本人還未測試,望有知道答案的留言下~~

 


免責聲明!

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



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