報錯:
Architectures、Valid Architectures和Build Active Architecture Only分別指:
iOS的App現在基本都是用llvm在編譯,Xcode也提供了各種設置幫助你進行編譯參數的設定。裏面有一項就是設定編譯的體系結構,涉及到的參數包括:Architectures、Valid Architectures和Build Active Architecture Only。
有些新手對這幾個參數往往不知道怎麼選擇,這裏簡單介紹一下。
Architectures:這是指你想支持的指令集,比如:armv7,armv7s,或者可以用$(ARCHS_STANDARD_32_BIT)這樣的參數
Valid Architectures:這是指你即將編譯的指令集
Build Active Architecture Only:是否只編譯當前設備適用的指令集(如果這個參數設爲YES,那麼如果你用iPhone 6調試,最終生成的一個支持arm64指令集的Binary;如果你用iPhone4編譯,最終生成一個支持armv7指令集的Binary,所以一般在DEBUG模式下設爲YES,RELEASE設爲NO)
這裏,我們編譯最終支持的指令集是Architectures和Valid Architectures兩個參數的交集。
另外,列一下目前常見iOS設備的指令集:
ARMv8/ARM64: iPhone 6(Plus), iPhone 5s, iPad Air(2), Retina iPad Mini(2,3)
ARMv7s: iPhone 5, iPhone 5c, iPad 4
ARMv7: iPhone 3GS, iPhone 4, iPhone 4S, iPod 3G/4G/5G, iPad, iPad 2, iPad 3, iPad Mini
ARMv6: iPhone, iPhone 3G, iPod 1G/2G
解決方法:
1.將Valid Architectures裏的arm64去掉
2.將Build Active Architecture Only設置爲no
3.將不支持arm64的, 編譯, 使它支持arm64
簡書博客地址