iOS App 安装包瘦身指南

安装包要由少数有些构成,资源文件及可执行文件,瘦身主要由当下简单局部入手:

一致、资源文件瘦身

1、删除无用资源

今日该没APP需要支持iPhone4以下的机型了,所以1X底图形可以合删掉。3X的图样是保存还是删掉看具体情况。

2、未运的图纸通过LSUnusedResources环视删除

苟留心的凡可能会见发生无意伤,该工具是都匹配,一些凑合名字来以的图样要小心手动剔除。

3、其他资源手动删除

有的旋律、视频与剩下的plist文件以及readme文件什么的目测只能肉眼扫描了。

4、删除功能重新的老三着库

5、资源减少

1>>图片压缩,使用ImageOptim实现无损压缩,COMPRESS_PNG_FILES和STRIP_PNG_TEXT设置为NO;

ImageOptim当时是如出一辙暂缓大好之图纸压缩工具,可以进行无损压缩,能够对
png 和 jpeg
图片文件进行优化,它亦可找到最佳的减参数(在装中可以设置压缩比例,80%
及以上是无损压缩,推荐用),并透过解除不必要之音(如文件之 EXIF
标签和颜料配置文件等),优化后达到减少文件大小的效力

2>>使用TinyPNG有损压缩图片,TinyPNG非常好用强烈推荐.

应用的时一直执行tinypng *.png -k token脚本即可

[注意]于比较生尺寸的图纸,可以和设计沟通,在不失真和熏陶效果的前提下,使用TinyPNG展开压缩;较小尺码的图,建议以ImageOptiom。

6、用LaunchScreen.storyboard替换启动图片

7、资源按照需加载,非必不可少资源且相当及利用时再也由服务端拉取

8、变更图片文件之导入方式

图片资源的导入方式发生如下几栽:

  1. Assets.xcassets。

无非支持png格式的图样;

图片就支持[UIImage imageNamed]的方式实例化,但是不能够从Bundle中加载;

当编译时,Images.xcassets中之拥有文件会吃于包为Assets.car的文书。

  1. CreateGroup

香艳文件夹图标;Xcode中分文件夹,Bundle中还于同一个文件夹下,因此,不克起文件重名的场面;

好直接以[NSBundle mainBundle]当资源路,效率高;

可以采用[UIImage imageNamed:]加载图像。

  1. CreateFolderRefences

蓝色文件夹;Xcode中分文件夹,Bundle中同样分文件夹,因此,可以出现文件重名的情;

需要在[NSBundle mainBundle]的底蕴及拼接实际的不二法门,效率比较差;

不能够采取[UIImage imageNamed:]加载图像。

【说明】:蓝色文件夹只是以文件才的创导了援,这些文件未会见受编译,所以当使的时刻需要投入该路径。

[建议]运用Assets.xcassets来治本图片

老二、可执行文件瘦身

1、打开bitcode设置

当”Build Settings”->”Enable Bitcode”选项中观看此设置

bitcode是深受编译程序的如出一辙种植中形式之代码,上盛传apple
store后,apple可以为对象安装APP的设备开展优化二进制,减多少安装包之大大小小。

短:1.用户设置之二进制文件不再是开发这边转移的,是苹果通过bitcode编译优化出来的,其对应的调试符号信息丢失了,无法再因崩溃日志定位崩溃现场;
2.发生来三正在库不支持bitcode,需要开拓bitcode重新编译。

2、编译器优化级别

1>>BuildSettings->Optimization Level,Xcode默认设置为“Fastest
,Smallest”,保持默认即可。

2>>Build Settings-> Linking->Dead Code Stripping 设置成 YES

3>>Deployment Postprocessing 设置成YES

4>>Strip Linked Product 设置成YES

5>>工程的Enable C++ Exceptions和Enable Objective-C
Exceptions选项都安为NO。手动管理特别。

6>>symbols hidden by default选项设置也YES。

7>>所有没有应用C++动态特性的lib库(搜索工程没有采用dynamic_cast关键字)
Enable C++ Runtime Types 选项设置也NO。

3、去除符号信息

Strip Debug Symbols During Copy 和 Symbols Hidden by Default
在release版本应该设为yes,可以去不必要的调剂符号。Symbols Hidden by
Default会将具备符号都定义成”private extern”。

4、第三方库

类里会引入博老三方静态库,如果能明了这些第三正值库在可执行文件里占有的分寸,就得评估是否值得去寻觅替代方案去丢这第三方库。通常使用linkmap来进行统计,然后对援的库房大小进行评估,对于过那个的仓库是否有相对轻量的库底替代方案;例如只下及百度地图的基本功能,这时就好用百度地图轻量包代替全量包,安装包可减5M左右

[建议]其三着库太好用cocopods管理

5、APPcode

参看

使用AppCode的9条理由

参考链接和拓展阅读

1、《iOS安装包瘦身指南》

2、iOS安装包瘦身之那些事情

3、iOS安装包瘦身方法

4、iOS APP安装包瘦身实践