ipa的大小压缩优化
一个安装包分为二进制代码文件,资源,配置文件。ipa大小优化主要从资源、二进制文件入手。
资源类优化
图片
JPG图片压缩比是最小的,图片去除未使用的图片,最能减少ipa包的大小。JPG格式的图片可使用ImageOption进行无损压缩,降低图片的大小。PNG的XCode的配置CompressPNGFile为YES。同时也可使用ImageOption进行无损压缩。
文件资源
主要是检查是否存在过期文件,如不需要清理即可。
二进制文件优化
二进制文件是由各种代码文件、静态库、动态库经过编译后生成的可执行文件。
- XCode开启编译选项Write Link Map File XCode -> target -> Build Settings -> 搜map -> 把Write Link Map File选项设为yes,并指定好linkMap的存储位置。
- 编译后到编译目录里找到该txt文件,文件名和路径就是上述的Path to Link Map File。
~/Library/Developer/Xcode/DerivedData/XXX-eumsvrzbvgfofvbfsoqokmjprvuh/Build/Intermediates/XXX.build/Debug-iphoneos/XXX.build/。 这个LinkMap里展示了整个可执行文件的全貌,列出了编译后的每一个.o目标文件的信息(包括静态链接库.a里的),以及每一个目标文件的代码段,数据段存储详情。
可以使用第三方工具 计算Link map下每个静态库和.o可执行文件的大小。
编译选项优化
如果项目是很早之前(xcode4,5)建立的,迭代到现在 的确可以检查一下有利于减少安装包的编译选项:
- Optimization Level 使用Fastest, Smalllest。这个选项会开启那些不增加代码大小的全部优化,并让可执行文件尽可能小。
- Strip Linked Product 设置为YES,需要注意的是Strip Linked Product也受到Deployment Postprocessing设置选项的影响。在Build Settings中,我们可以看到, Strip Linked Product是在Deployment这栏中的,而Deployment Postprocessing相当于是Deployment的总开关。记得把Deployment Postprocessing也设置为YES, 该选项对安装包大小的优化效果还是非常明显的。 PS:Deployment Postprocessing这个配置项如果使用xcode打包,xcode会默认把这个变量置为YES, 如果使用脚本打包,记得设置。
- Symbols Hidden by Default设置为YES,可以去除不必要的调试符号。
- Make Strings Read-Only 设置为YES
参考文章: