一 APK结构:现在AndroidStudio支持浏览安装包结构首先将待瘦身的app拖入AS里结构如图所示:
会显示大小占比 和 一个apk的构成
二 对应结构的瘦身方法
1 针对dex即编写的Java代码生成的文件;
方法1: 开启混淆 过滤未用到的class
buildTypes {
//增加构建类型
releaseMinifyEnabled {
//开启dex字节码压缩,舍去未使用的jar和class文件
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
}
//默认release构建类型
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
方法2:移除废弃功能的代码;
移除重复的代码【review】;
移除功能重叠的框架【网络请求,图片加载等等】;
移除无用的 dependencies 或者 jar 包;
2 针对res资源文件
方法1:配置build.gradle文件,开启shrinkResources,作用是将res目录下未使用到的图片文件进行特殊处理,其具体做法是将未使用到的图片全部变成1x1像素的小图,从而减少res目录的大小
buildTypes {
release {
signingConfig signingConfigs.comicSign
minifyEnabled true
shrinkResources true
debuggable true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
方法2:采用三方工具(tinypng:https://tinypng.com/)压缩png资源图片
方法3:采用webp格式的图片替换png和jpg格式的图片
方法4:目前市面上绝大部分机型都处于 xxhdpi 的适配范围,所以可以考虑只保留 xxhdpi 目录下一份图片资源;
方法5:删除没有使用的资源 快捷键: Ctrl+Alt + Shift + I 或手动打开AS顶部-->Analyze--->Run Inspection by name
搜索 未用到的资源 Unused resources
3 assets的精简 看哪些资产未用到且打入包里的删除
4 lib精简 native库瘦身:
在 build.gradle 使用 abiFilters 配置需要用到的 CPU 架构,并将不需要兼容的 so 文件从项目中移除即可。
可根据机型只保留 一种或2种架构