如何对apk进行瘦身?

2020,回归后第一篇博客,直接分享之前自己总结记录后的笔记,
我们都知道apk是由:
  • asserts
  • lib
  • res
  • dex
  • META-INF
  • androidManifest
 
apk瘦身:
1、控制raw中资源的大,优化asset下的资源文件,能不放在客户端的资源就不放在客户端,assets目录允许下面有多级子目录,而raw下不允许存在目录结构,assets中的文件不会产生R文件映射,但raw会
2、删除无用字体,对于有些只会用在logo中的字体,将字体文件进行删减处理
3、减少icon-font的使用,利用svg进行代替
4、动态下载资源,减少layout文件,复用资源文件
5、压缩资源文件:在需要的地方解压文件
6、配置abiFilters:一个硬件设备对应一个架构(mips、arm或者x86),只保留与设备架构相关的库文件夹(主流的架构都是arm的,mips属于小众,默认也是支持arms的so的,但x86不支持)
7、优化resuoures.arsc:该文件不能被压缩,每次读取前系统必须进行解压的操作,这就会有一些性能和内存的开销,所以删除无用的资源映射
8、开启代码混淆,使用微信资源压缩打包工具
9、优化图片资源:压缩图片,并使用webp格式
10、打包时剔除无用资源
11、删除无用的语言,国内的app用中文就够了
13、统一应用风格,减少shape文件,使用toolbar,减少menu等布局文件
14、开启去除无用资源,在build.gradle中使用shrinkResources去除无用资源
15、避免重复库,清理第三方库和冗余代码
 
具体的操作步骤:
一:监控与上个版本的变化
1、每个dex方法数的变更情况
2、每个模块线性内存的变化情况
3、没有alpha通道的png图,先压缩成png8,或者可压缩成webp减少体积
4、超过一定数值的大文件,特别是图片资源可采用有损压缩
5、安装包的大小,文件数变化
6、新增文件,减少文件,文件大小发生变化的情况
二:删除无用资源
三:语言包动态加载
四:资源混淆
之前总结的tips,直接给的结论, 但可能存在错误的地方,希望不吝指出,后续会不断完善。
 

原文地址:https://www.cnblogs.com/yuanting/p/13519340.html