知識(shí)普及
什么是ARM ?
ARM處理器钦幔,特點(diǎn)是體積小、低功耗常柄、低成本鲤氢、高性能,所以幾乎所有手機(jī)處理器都基于ARM西潘,在嵌入式系統(tǒng)中應(yīng)用廣泛armv7|armv7s|arm64都是ARM處理器的指令集铜异,這些指令集都是向下兼容的,例如armv7指令集兼容armv6秸架,只是使用armv6的時(shí)候無法發(fā)揮出其性能揍庄,無法使用armv7的新特性,從而會(huì)導(dǎo)致程序執(zhí)行效率沒那么高东抹。
i386|x86_64 是Mac處理器的指令集蚂子,i386是針對(duì)intel通用微處理器32架構(gòu)的。x86_64是針對(duì)x86架構(gòu)的64位處理器缭黔。所以當(dāng)使用iOS模擬器的時(shí)候食茎,模擬器32位處理器測試需要i386架構(gòu),模擬器64位處理器測試需要x86_64架構(gòu)馏谨,iOS模擬器沒有arm指令集别渔。
關(guān)于iPhone指令集
arm64:iPhone6S | iphone6SPlus|iPhone6| iPhone6Plus|iPhone5S | iPhoneSE | iPad Air| iPad mini2(iPad mini with Retina Display)
armv7s:iPhone5|iPhone5C|iPad4(iPad with Retina Display)
armv7:iPhone4|iPhone4S|iPad|iPad2|iPad3(The New iPad)|iPad mini|iPod Touch3G|iPod Touch4
Xcode選擇
->Build Setting中
Architectures
指定工程被編譯成可支持哪些指令集類型,而支持的指令集越多,就會(huì)編譯出包含多個(gè)指令集代碼的數(shù)據(jù)包哎媚,對(duì)應(yīng)生成二進(jìn)制包就越大喇伯,也就是ipa包會(huì)變大。Valid Architectures
限制可能被支持的指令集的范圍拨与,也就是Xcode編譯出來的二進(jìn)制包類型最終從這些類型產(chǎn)生稻据,而編譯出哪種指令集的包,將由Architectures與Valid Architectures(因此這個(gè)不能為空)的交集來確定买喧,比如捻悯,你的Valid Architectures設(shè)置的支持arm指令集版本有:armv7/armv7s/arm64,對(duì)應(yīng)的Architectures設(shè)置的支持arm指令集版本有:armv7s淤毛,這時(shí)Xcode只會(huì)生成一個(gè)armv7s指令集的二進(jìn)制包今缚,默認(rèn)為 Standard architectures(armv7,arm64),如果你想改的話,自己在other中更改Build Active Architecture Only
指定是否只對(duì)當(dāng)前連接設(shè)備所支持的指令集編譯
當(dāng)其值設(shè)置為YES低淡,這個(gè)屬性設(shè)置為yes荚斯,是為了debug的時(shí)候編譯速度更快,它只編譯當(dāng)前的architecture版本查牌,而設(shè)置為no時(shí)事期,會(huì)編譯所有的版本。 所以纸颜,一般debug的時(shí)候可以選擇設(shè)置為yes兽泣,release的時(shí)候要改為no,以適應(yīng)不同設(shè)備胁孙。
如何使用
如果打包的時(shí)候指令集32位和64位的都有唠倦,那么在64位CPU上首先運(yùn)行的是64位的指令集,只有在iPhone5s(iOS7)及其以上才可以使用同時(shí)包含32位和64位的