资源优化
删除无用图片
删除无用图片的过程,可以概括为下面这 6 大步。
- 通过 find 命令获取 App 安装包中的所有资源文件,比如find > /Users/daiming/Project/-name。
- 设置用到的资源的类型,比如 jpg、gif、png、webp。
- 使用正则匹配在源码中找出使用到的资源名,比如 pattern = @"@"(.+?)""。
- 使用 find 命令找到的所有资源文件,再去掉代码中使用到的资源文件,剩下的就是无用资源了。
- 对于按照规则设置的资源名,我们需要在匹配使用资源的正则表达式里添加相应的规则,比如 @“image_%d”。
- 确认无用资源后,就可以对这些无用资源执行删除操作了
推荐工具
LSUnusedResources LSUnusedResources.gif
资源压缩
就是在不损失图片质量的前提下尽可能地作压缩。目前比较好的压缩,将图片转成 WebP。WebP 是 Google 公司的一个开源项目
例如无损压缩模式
cwebp -lossless original.png -o new.webp
WebP 在 CPU 消耗和解码时间上会比 PNG 高两倍所以还需要在性能和体积做取舍
资源文件云端下载
云端下载的策略为:
(1)在若干时机尝试下载zip图片包,对zip包进行版本判断,若云端有更新版本,则根据屏幕是3x还是2x,下载对应的zip包,解压存入沙盒中
(2)在读取图片时,首先从bundle中读取,若失败,则从沙盒中读取,若依然失败,则将该图片当作一个网络图片进行请求,确保图片能被展示。
编译选项优化
- LTO,即Link Time Optimization。
苹果在2016年的WWDC What’s new in LLVM中详细介绍了这一功能。LTO能带来的优化有:
(1)将一些函数內联化
(2)去除了一些无用代码
(3)对程序有全局的优化作用
在build setting中开启Link-Time Optimization为Incremental,经测试可缩减安装包大小500KB左右。 - Strip Link Product设成YES
- Make Strings Read-Only设为YES
- 去掉异常支持,Enable C++ Exceptions和Enable Objective-C Exceptions设为NO,并且Other C Flags添加-fno-exceptions
可执行文件优化(代码瘦身)
可执行文件就是 Mach-O 文件,其大小是由代码量决定的。通常情况对可执行文件进行瘦身,就是找到并删除无用代码的过程。
LinkMap .png
首先,找出方法和类的全集;
然后,找到使用过的方法和类;
接下来,取二者的差集得到无用代码;
最后,由人工确认无用代码可删除后,进行删除即可。
我们可以通过分析 LinkMap 来获得所有的代码类和方法的类和方法的信息
通过 AppCode 找出无用代码
参考文章
https://www.jianshu.com/p/a3151dfebc9c
https://time.geekbang.org/column/article/88573
https://mp.weixin.qq.com/s?__biz=MzAwNDY1ODY2OQ==&mid=207986417&idx=1&sn=77ea7d8e4f8ab7b59111e78c86ccfe66&3rd=MzA3MDU4NTYzMw==&scene=6#rd
网友评论