近期对公司项目进行了一次安装包瘦身优化,总体效果明显,总包大小从之前的66.9M降到了49.2M,在此做下瘦身过程记录。
先说下目前行业内常用的瘦身办法:
- 删除无用资源,包括1倍图、无用图片、重复图片、无用文件
- 图片压缩,针对大图进行无损压缩
- 按需下载图片,不常用的图片动态下载
- 删除项目中的无用类,减少无用方法,重复代码整理
- 删除无用第三方库,静态库指令集优化
- 编译选项优化
- 减少storyboard和xib使用
- 支持BitCode
本次一期瘦身过程中用到的方法:
1、删除无用资源
首先排除所有的1倍图,当存在2x或3x图片时,从Assets.xcassets中移除1x图片。
通过工具LSUnusedResources扫描无用图片,要选中ignore similar name防止误删图片,然后按size排序,优先处理较大的图片,最后再逐个Xcode中进行确认再进行删除。
删除重复图片,名字重复可通过Xcode警告发现:Assets.xcassets:-1: The image set name “addImage” is used by multiple image sets。内容重复图片排查本期未做。
2、图片压缩
针对banner大图或者背景图片进行压缩处理,ImageOptim
4、删除项目中的无用类
排查未被引用的文件,一旦被引用,即使未使用,通过此工具也排查不出来,CATClearProjectTool
通过排查到的文件列表,逐个Xcode工程中搜索确认,防止通过NSClassFromString反射实现。由于项目年代久远,此次一共发现了40+无用类文件。
5、删除无用第三方库
通过排查无用类的时候,可发现第三方未被使用,然后再进一步排查整个类库是否未被使用。此次一共移除了3个无用第三方库。
工欲善其事必先利其器
无用图片排查:LSUnusedResources
无用类排查:CATClearProjectTool
图片内容相同排查:fdupes
图片压缩工具:ImageOptim
一个根据linkMap文件计算Xcode里各个工程代码占安装包大小的工具:shell
未使用的方法排查:unused_funcs