iOS ipa瘦身
分类: 资源、编译、执行的代码
瘦身:
1、 资源文件(尤其是图片)
https://github.com/tinymind/LSUnusedResources/
1)检查文件里面没有
直接使用到的
;
- 检查出来的图片并不是一定没有使用的,有可能有一些是一组的,或者作为资源使用的,这个根据自己的项目来确定是否有用,不过,这个软件已经帮助我们过滤了一次,所以范围小了很多。
- 按照项目图片命名的特殊性,进行判断特殊的图片是否使用了。【项目图片命名应该按照约定的规则】
- 压缩图片, 尤其是大的图片 imageopim
- 不影响是觉的情况下,可以压缩改变通道。 32bit —> 8bit
- xib 这些文件占用相对大点,改为代码写布局
2、冗余的代码
1、没有使用的代码
1)WBBlades 检查没有用的文件
里面列出来文件很多,但是,需要思考,我们排除掉第三方库等等,这个看看需要怎么修改?
- 过滤出来的,并不是一定是没有用的,自己还是要到代码里面搜索,因为有些是判断不出来的 【不支持,以及项目可能存在bug】
2、优化重复的代码
1)代码组织在同一个地方, 重复代码的优化
- 代码瘦身,不应该破坏代码的开发原则, 比如:开闭原则
3、app thinning
1> app thiing 会把上传的包重新组合, 给没给机型申城特定的安装包。
- 只包含当前设备的二进制文件: armv7s的机制不需要arm64的二进制文件
- 只包含当前文件的图片, 视网膜屏就不需要2x图了。
把你上传的包重新组合下,会给每个机型生成特定的安装包。它的原理是,
2> On Demand Resource (按需下载)
不是很常用的资源放到后台
3> BitCode
误传可以减小尺寸,我试过没有明显效果。在编译选项里打开就行。
4> 确认编译选项:
Optimization Level: Fastest,Smallest
Deployment Postprocessing: Yes
Strip linked Product: Yes
Symbols Hidden by default: Yes
Make Strings Read-only: Yes
https://github.com/kobe1941/shell 统计各个静态库的大小
https://github.com/xuezhulian/selectorsunref iOS瘦身,没有使用的方法
尽可能的用数据来进行衡量一下
我们的目标是什么?是给“下载包”瘦身,而不是“上传审核包”。区别在于审核包,会包含所有硬件架构的二进制内容。上传后苹果会自动帮我们拆分开,针对不同手机生成不同的下载包。下载包的大小可以到app 开发者后台自己看。
小结:
1、 主要看资源文件的大小优化
2、一大片的不是使用的代码,应该删除
3、代码优化,对于占用大小影响不大,如果可以选择,代码的合理性应该更加重要
4、静态库要不要处理?
5、 我们是下载包
瘦身,而不是上传审核包
。 审核包是包括所有硬件架构的二进制内容, 上传苹果后会自动拆分开,针对不同的手机生成不同的下载包。 —— app开发者后台查看。 但是,上传包可以瘦身普通的内容
—— 区分: (1)上传包阶段的瘦身 , (2)下载包阶段的瘦身
删除无用代码带来另一个福利就是,App的启动速度变快了。
启动速度的时间长度, 和包的大小也是 有关系的 , 因为启动的过程就是加载的过程。 这个启动的优化,下一次详细弄一下;
1、 看一下各个版本的记录, 图片压缩是否有效果?
参考链接:
https://xie.infoq.cn/article/c2de1ff54b2f5b88170541b73
http://www.cocoachina.com/articles/859032
http://sindrilin.com/2018/12/11/image_subtraction.html
http://www.cocoachina.com/articles/859032
https://github.com/jezzmemo/iOSThin
https://www.jianshu.com/p/77d306595698 这个工具
1、资源瘦身
2、编译瘦身
3、可执行文件优化,