经过大量数据验证,apk的体积与应用安装量程负相关关系,更小的体积将带来更多的装机量。
-
Android Size Analyser 插件
想要优化包体积,首先要分析安装包中各部分的空间占比。我们一般将将apk拖入android studio进行分析,另外推荐使用Android Size Analyser插件,它可以在分析的同时直接给出优化建议
-
Lint
使用Lint进行静态检查,可以发现一些可以删除的资源和代码,帮助我们优化包体 -
图片压缩
除了删除无用资源,还可以通过替换图片格式达到"压缩"图片的作用:- 使用
Webp
、TinyPNG
等替换Png
- 使用矢量图替换位图等
- 使用
-
so压缩
对于项目中使用的so文件可以进行7zip
进行压缩存放在Assets
中,然后再运行时解压后再加载 -
代码量优化
注意代码的可复用性,避免产生较多重复代码,可以使用第三方静态检查工具例如sonarqube
等,对代码重复率进行检查。当然更有效的办法是使用kotlin
替代java
,代码量有明显下降 -
Proguard
在正式出包前,一定要开启Proguard对apk进行优化,它会删除一些无用的class以及method,同时提供资源混淆、so压缩等处理,对包体积进行整体优化 -
R8
使用R8替代DB,R8 能够像Proguard一样对APK包体积进行优化的同时,其便以速度更快 -
插件化
如果以上诸多范式仍然不满意,那么请考虑使用插件化,这是减少包体积的终极方案:- 国内的插件化开源框架很多,例如滴滴的
VirtualAPK
、360的Replugin
等都可以选择使用 - 对于在GooglePlay上架的应用来说,Android App Bundles是唯一可用的插件化手段
- 国内的插件化开源框架很多,例如滴滴的