一.为什么要进行apk瘦身
所谓apk瘦身就是减少apk的安装包大小。
对于用户来说,apk的大小越小,下载就越快也越不耗费用户的流量,如果你的apk动则几十M甚至上百M,用户就会犹豫要不要下载了。
所以减少apk的大小就显得尤为重要。
二.apk大小分析
通过AndroidStudio我们就可以看到我们的apk目前的大小情况,如下图:
三.项目检测
随着项目的不断迭代,不同开发人员的开发,项目会难免会出现一些无效和重复的资源,因此我们第一步就是检测出这些无效和重复的资源,然后删掉从而减少apk的大小。
接下来我们使用AndroidStudio 的Lint工具来检测下:
然后开始检测,lint可以检测出项目不规范的编码、多余的资源以及可能的bug和一些其他问题,这里我们主要是来解决检测出的多余资源。
在检测结果中找到Unused resowrces:
然后根据提示删除未使用的资源。
四.减少第三方库和避免引入同一类型的多个第三方库
项目中有些第三方库我们可能只是用了其中的一小个功能,这时候就可以考虑尽量不要自己来使用,删掉这个第三方库;
有的时候项目中对于同一类型的第三方库,比如网络加载库可能之前使用的是vollery后面改用了okhttp这时候要检查是否把vollery库删了。
五.build.gradle文件配置优化
1.打包时剔除无用的资源:
2.删除无用的语言
六.lib中资源优化
1.为了支持不同指令集的情况,应用可能会包含armeabi、armeabi-v7a、x86的SO文件等。
目前主流的机型都是支持armeabi-v7a的,并且armeabi-v7a兼容armeabi。所以在一般的开发中我们只需要使用armeabi-v7a 进行ABI支持。
七.图片优化
图片在apk大小中占比很大,因此图片优化很关键
1.不同分辨率图片的优化,对于大部分图片来说只要做一套主流分辨率图就可以了,没必要多套。
2.需要透明度的图片使用PNG格式,不需要的一律使用JPG格式;使用JPG格式的图片在保证质量的前提下进行压缩。
3.使用矢量图
4.使用新的图片格式WebP.
5.可用xml实现的图片尽量使用xml来实现
八.layout文件的复用
提取可公用的layout文件,减少layout文件的数量
九.代码优化
1.使用lint分析后,删除不规范和无用的代码
2.删除不再使用的类
十.动画优化
尽量不要使用多图片的帧动画。
十一.assets资源优化
1.assets中主要是如果app中有引入第三方字体包的时候一定要慎重,有时候app中只是很少的地方要用到特殊的字体,这时候如果就引入一个比较大的字体包,就得不偿失了。
2.还有一些音频文件,也尽量优化。