iOS应用瘦身总结

1,826 阅读2分钟

1、LSUnusedResources去除冗余图片

通过以下地址下载LSUnusedResources项目。运行项目,选择需要扫描的项目路径,找出项目当中的冗余图片资源。这里需要注意的是,在扫描前需要勾选Ignore similar name选项。

2、ImageOptim图片无损压缩

使用ImageOptim工具对图片进行无损压缩

3、项目中较大的资源例如音频、视频等,建议在项目安装登录之后下载到本地。或者对项目中较大的文件,例如html、db、音视频等等进行压缩,在项目启动之后进行解压存放到本地。可以使用SSZipArchive进行解压。

4、SameCoderFinder去除相同代码

通过以下地址下载SameCodeFinder脚本

通过命令检测本地是否安装python

查看python 2的版本
python --version
查看python 3的版本
python3 --version
查看 pip 版本和位置(视系统和 Python 版本的不同命令可能为 pip 或 pip3)
pip --version

如果没有安装python和pip,可以通过以下命令来安装python

安装python3
brew install python3
下载安装脚本
curl https://bootstrap.pypa.io/get-pip.py
安装pip
python3 get-pip.py

安装结束之后通以下方式安装simhash

pip install simhash

最后cd到SameCodeFinder.py存放的目录,执行以下命令

python SameCodeFinder.py ~/Projects/opensource/MWPhotoBrowser/ .m  --max-distance=10 --min-linecount=3 --functions --detail

注意:其中~/Projects/opensource/MWPhotoBrowser/需要替换为本地项目路径。分析的结果会在SameCodeFinder.py所在路径下输出为out.txt文件。最后一位数字代表两个文件的海明距离,数字越小说明两个文件越类似,如下:

5、AppCode

使用AppCode检测出项目中未使用的类和方法,下载地址:AppCode,密码:d87i

6、编译器相关

在buildSetting中, Strip Linked Product、 Deployment Postprocessing、 Symbols Hidden by Default在release版本应该设为yes,可以去除不必要的调试符号。需要注意的是Deployment Postprocessing如果在Debug情况下设置为YES会导致Debug调试时无法停在断点处。

7、使用Python脚本扫描Mach-O文件

在Mach-O中__TEXT:__objc_methname:中存放了所有的方法,而__DATA__objc_selrefs包含了所有被使用的方法,通过取两个集合的差集就可以得到所有未被使用的方法。具体脚本实现可以参考objc_cover