废话不多说,直奔主题
问题:为什么要给我们的apk瘦身?
1、安装包比较大。废话!如果是走公司的流量,恨不得你的apk小到几kb在不失功能情况下。流量就是money。
2、期望能通过瘦身,降低APK的体积,显得体积小,功能强!
可能优化的点在哪?
首先要仔细思考:
1、减少切片,大图,及背景图
2、图片压缩,采用.9图片。
3、采用压缩率更高的webp图片格式,代替当前的png格式
4、清理不需要的布局文件,XML格式资源文件,图片资源
5、删除一些用户量极少,“无意义”的功能
6、检查第三方包,把不需要的组件、图片之类的删除或替换
7、降低so库的体积
8、把部分页面做成H5,客户端删除这部分功能
9、自查代码,尤其是逻辑相似的部分,抽出去来,删除冗余代码
10、降低插件体积,采用增量更新
先放图,看看我的瘦身之后的效果:
来看一下,如何具体实现
1、lint使用
采用lint工具,删除了大量无用的资源。有一定作用。Android studio集成了lint工具,检测“unused resoure“及unused declaration等。这里我们使用lint检测了无用的资源文件。
另我的量一篇文章有介绍2、其他团队so库的体积减少,作用明显著,尤其类似于百度地图,直播软件
3、代码冗余部分:效果非常有限,你再减少也少不了几kb
4、使用图片压缩工具,有一定作用
Google推荐图片压缩工具:https://developers.google.com/speed/docs/insights/OptimizeImages,市面上有许多工具可用来对JPEG和PNG文件执行进一步的无损压缩,且不会对图片质量造成任何影响。对于JPEG文件,我们建议您使用jpegtran或jpegoptim(仅适用于Linux;使用–strip-all选项运行)。对于PNG文件,我们建议使用OptiPNG或PNGOUT。5、H5页面,作用明显,而且H5适配非常简单啊
6、支持插件so,插件支持网络加载so及更新原则,作用明显
7、代码混淆,jar包资源混淆
8、TinyPng压缩图片 点我进入网站测试
TinyPng能够在视觉上几乎不
影响图片的情况下显著压缩图片体积。
从图中可以看到,压缩3次以后基本上体积就很难再减少了,压缩5次以后体积基本上就不变了,值得高兴的是,即使不停的压缩,图片依然不会太失真(但这是有损压缩,有时候alpha通道会给你压缩没了)。如下,压缩5次后的对比图:
TinyPng好用的地方:
1、图片压缩后对视觉影响不大,但体积显著减小
2、可以批量压缩
3、压缩后文件名与原文件名相同,可以直接替换,尤其是批量压缩的时候
4、可以反复压缩5-6次,而不用担心太失真,肯定会失真啦,不影响视觉效果
5、简单有效,还不要钱
附压缩了三次之后的图片,真心强悍,肉眼无差别: