【IOS】IOS瘦身之armv7 armv7s arm64选用

之前每个版本的ipa包打出来都才20M出头,后来不知道从哪个版本起打的包每次都将近40M,但是工程中也没有明显的增加很大第三方类或者图片、静态文件。于是就开始了各种瘦身计划:压缩图片,删除不必要静态库。做了一番改动后发现包只比原来小了1M多,收效甚微。后来经过查阅资料才知道armv6 armv7 armv7s arm64引起编译包翻倍增大的问题,于是就试了一下,果然ipa包又回到了以前的大小。这个指令集
xcode创建工程默认支持的指令集有下列三种

>armv7
  iPhone4
  iPhone4S
>armv7s
  iPhone5
  iPhone5C
>arm64
  iPhone5S(以上)

机器对指令集的支持是向下兼容的,因此armv7的指令集是可以运行在iphone5S以上的,只是效率没那么高而已~

但是由于苹果要求必须支持arm64,因此这个架构是必须存在的.
在xcodeTARGETS里边Architectures:

tup.png

Architecture : 指你想支持的指令集。

Valid architectures : 指即将编译的指令集。

Build Active Architecture Only : 只是否只编译当前适用的指令集。

================================================

如果全部支持切不在乎包大小的话,Architecture的值选择:armv7 armv7s arm64

如果支持5以上切包不要求则选用 armv7s ,arm64

如果支持全机型,有不想ipa包太多就选择 armv7 , arm64

如果最小ipa的话,切抛弃5s以下,可以采用只用arm64

PS:选arm64时需要最低支持5.1.1:

1,如果想自己的app在各个机器都能够最高效率的运行,则需要将Build Active Architecture Only改为NO,Valid architectures选择对应的指令集:armv7 armv7s arm64。这个会为各个指令集编译对应的代码,因此最后的 ipa体积基本翻了3倍,Release版本必须NO。

2,如果想让app体积保持最小,则现阶段应该选择Valid architectures为armv64,这样Build Active Architecture Only选YES或NO就无所谓了

至于如何选择,就看我们产品的要求了

推荐阅读更多精彩内容