这是一次安装包大小优化的实践 。
随着业务的增加,工程中引入越来越多的业务代码和第三方库,整个安装包越来越大 。以今日头条5.7.5为例 最近几个版本的ipa大小如下:
5.7 -> 72.2M ( 0.8M) 正常业务增量
5.6 -> 71.4M ( 14M) 主要原因:接入某SDK后安装包的增加(约13M) 京东SDK(约1M)
5.5 -> 57.4M ( 1.7M) 正常业务增量
5.4 -> 55.1M ( 28M) 主要原因:加入Swift 系统会加入语言库来支持(约27M)
5.3 -> 27.5M 之前做过一次资源文件和类文件的清理
优化安装包分为如下几个步骤:
- 分析安装包的构成,一个安装包分为二进制代码文件,资源,配置文件 。需要知道各个方面的占比 。知道各个方向的优化策略,譬如二进制文件如何优化,资源文件如何优化执行优化,得出结果
ipa是一个压缩包,安装包里的主要构成是(图片 文档 二进制文件),我们下面的分析
1.图片优化:
从上面来看,图片的压缩比最小 。几乎没有压缩,这也说明每减少一张图片,就实实在在的减少了ipa的大小 。为了验证上面的数据,我们来做一些实验: 我们新建一个项目,测试资源图片对安装包的大小的影响: 目录结构如下:
其中资源信息如下:
然后进行打包Archive→Export.得到IPA文件
从上面的结果来看,安装包的大小基本等于图片资源的大小,可以看一下IPA的内容详情视图(下图),发现图片确实没有怎么压缩:
结论1:JPG资源图片的压缩比很小,每减少一张图片,就实实在在的减少了ipa的大小 。
下面我们进一步使用ImageOptim对图片进行压无损缩优化(如下图) 。看能否优化下安装包大小 。
压缩后,总文件大小为:屏幕快照 2016-10-25 下午8.58.24.png,优化掉了1MB的大小 。我们然后进行打包操作,最终的安装包确实也小了0.8MB,从11.6MB变成了10.8MB,。还是有优化的,如下图所示:
,
此时我们看xcode里的工程配置,COMPRESSPNGFILES 是YES的,有一些说法是这个变量的设置和ImageOptim冲突,这里看起来不是如此 。
结论2:ImageOptim有时候还是确实能优化资源大小,进而减少安装包大小的 。
是否因此可以完全确定ImageOptim的优化能力,我觉得看情况而定,上面的几种图片都是我iPhone手机里的相片导出的 。是JPG的格式 。
我们再对PNG做一些测试, 找一些资源图片放到工程中(我就不截图了,直截大小):
打包后的大小是:
系统帮我们优化掉1.1MB 。同样我们队图片进行一轮无损压缩优化,经过ImageOptim优化后效果:
我们进行打包,得到的安装包的大小是:还是2.2MB(特意将系统优化关闭):
推荐阅读
- 建设最美高压线走廊 高压线走廊
- 贷款利息是什么 贷款是什么
- 78例高血压病患者动态血压监测分析
- 网站建设教程,手把手教你怎么自己创建网站
- 降血压的植物有哪些
- 2017年电压力锅排行榜 爱德电饭锅
- 如何把旧手机的通讯录转到新手机
- 笔记本显示器不亮了怎么回事,手把手教你如何自己手动解决
- 手机无视密码直接解压的方法 压缩破解软件
- 工作压力大,想辞职? 工作压力大想辞职