iOS 安装包瘦身
1、App Thinning
苹果针对安装包已经做了三个层面的瘦身工作。
1.1 App Slicing
我们打包时,常选择arm64、armv7s 等架构支持。但是上传苹果应用商店后,他为我们的应用安装包针对不同的机型架构,生成了特定的安装包。也就是不同arm64架构的机型不会下载armv7s架构的安装包。
1.2 On Demand Resource
资源按需下载。XCode默认开启了改功能。为资源设置tag值,对应于使用到改资源的文件,绑定tag对应的tag值,当需要用到的时候下载对应的资源文件。
1.3 BitCode
2、资源瘦身
2.1 删除项目中未用到的资源文件
删除项目中未用到的图片资源(切记防止误删,有些使用字符串拼接图片名的使用方式可能不能被识别到)。
查找工具:
LSUnusedResources
2.2 压缩图片
对图片资源在不影响显示效果(失真度)的情况下进行适当压缩。
图片压缩工具
- tinypng
- pngquant
- ImageAlpha
- ImageOptim
3、代码瘦身
Optimization Level: Fastest,
Smallest Deployment Postprocessing: Yes
Strip linked Product: Yes
Symbols Hidden by default: Yes
Make Strings Read-only: Yes
3.1 删除项目中未用到的类文件
3.2 删除项目中未用到的方法/函数
查找项目中未使用方法的脚本工具 selectorsunref-master
使用方法:iOS代码瘦身:未使用的方法
- 执行 python selectorsunref.py
- 输入的第一个参数为xxx.app,可以把Xcode products目录下的xxx.app拖到命令行,这个参数是为了拿到.app下的mach-o文件,分析使用的方法和未使用的方法。
- 输入的第二个参数是工程目录,这个参数是为了递归遍历找到工程中所有的.h文件,然后过滤掉包含的协议方法。
3.3 一个根据linkMap文件计算Xcode里各个工程代码占安装包大小的工具
该脚本功能主要是把各个工程所占可执行文件的大小统计出来。