armv6、armv7开仰、armv7s、arm64都是ARM處理器的指令集薪铜,所有指令集原則上都是向下兼容的众弓。如 iPhone 4s的CPU默認(rèn)指令集為armv7指令集,但它可以同時(shí)也兼容armv6的指令集隔箍,只是在使用armv6的時(shí)候無(wú)法充分發(fā)揮其性能(無(wú)法發(fā)揮armv7指令集中得新特性)谓娃。
模擬器:
4s-5: i386
5s-6s Plus: x86_64
真機(jī):
armv6: iPhone、iPhone 2蜒滩、iPhone 3G滨达、iPod Touch(第一代)、iPod Touch(第二代)
armv7: iPhone 3Gs俯艰、iPhone 4捡遍、iPhone 4s、iPad竹握、iPad 2
armv7s: iPhone 5画株、iPhone 5c (靜態(tài)庫(kù)只要支持了armv7,就可以在armv7s的架構(gòu)上運(yùn)行)
arm64(注:無(wú)armv64): iPhone 5s、iPhone 6啦辐、iPhone 6 Plus谓传、iPhone 7、iPhone 7PlusPlus芹关、iPad Air续挟、iPad Air2、iPad mini2充边、iPad mini3
Build Active Architecture Only
這個(gè)屬性設(shè)置為YES時(shí)庸推,只編譯當(dāng)前的architecture版本(常用于Debug常侦,這樣編譯速度更快)浇冰;
設(shè)置為NO時(shí),會(huì)編譯所有的版本(常用于Release)聋亡。
常見(jiàn)Bug:
warning: ignoring file /Users/admin/Desktop/xxxxxxDemo/xxx.framework/xxx, file was built for arm64 which is not the architecture being linked (armv7): /Users/admin/Desktop/xxxxxxDemo/xxx.framework/xxx
大概意思就是:制作Framework時(shí)選擇的是arm64指令集肘习,不支持在armv7指令集的設(shè)備上運(yùn)行。
解決辦法:1坡倔、修改framework使其支持armv7漂佩;2脖含、在TARGET-Build Settings-Valid Architectures中,將armv7暫時(shí)去掉投蝉。
參考文檔:
1养葵、關(guān)于iOS設(shè)備處理器的指令集
2、iOS CPU架構(gòu)(ARM指令集)
3瘩缆、iPhone CPU指令集架構(gòu)