Apk瘦身
优化方式
图片资源优化
首先选择VD
矢量图片只需放置一份
图片太大绘制时间长,制作复杂成都高
否则选择We'bP,
体积更小,4.2.1+支持透明度
之后选择PNG
有透明度,渐变,阴影的情况下选择
剩下的选择JPG
资源压缩
PNG转换成WebP
1. Android studio 右击鼠标-cover to webp--单张转换
2.下载转换工具,进行统一压缩
下载地址https://developers.google.com/speed/webp/docs/precompiled/
PNG压缩
1.可以采用ImageOptim或者Pnfyu对png进行压缩
2.AAPT会使用内置的图片压缩算法来优化res/drawable目录下的PNG图片,但也可能会导致本来已经优化过的图片体积变大,这里禁用aapt优化PNG图片
Jpg压缩
同等质量的图片jpg比png要小
packJpg压缩工具
总结 app再5.0以后建议使用WebP,5.0以前如果需要透明效果使用png,
其他优化
纯色图片代码实现利用shape标签
减少资源放置份数
如果只在xxhdpi放一份图片会有问题吗
能用代码实现的图片尽量用代码实现 圆形 环形 渐变等都可以用代码实现
开启代码混淆和去除无用资源
android{
...
buildTypes{
release{
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
}
进一步资源混淆,微信开源了AndResGuard
其他优化
冗余代码优化
为什么会有冗余代码
1.CTRL+C CTRL+V
2.对项目不了解
荣誉代码的定义
完全一致的代码或者只修改了空格和评论
结构上和句法上一致的代码,例如只是修改了变量名
插入和删除了部分代码
功能和逻辑上一致的代码,语义上的拷贝
用什么工具检测荣誉代码
1.使用工具,例如PMD
2.PMD下载地址 https://pmd.gethub.io/
怎么检测
下载后输入: ./run.sh cpdgui
pmd-d/user/src-R rulesets/java/quickstart.xml -f text
https://pmd.gethub.io/pmd-6.17.0/pmd_rules_java.html
工具Lint
1.检查未使用资源并删除
2.Android studio -Analyze-Run inspection by Name -unused resource
无用代码优化
Analyze->Run inspection by Name -unused declaration ->Module app ->OK
压缩文件存储
1.导入7Zip,压缩存储预置资源
2.使用时,解压到本地,比如asserts中的资源
语言资源优化
再build配置中,配置resConfigs指定需要的语言类型
Splits根据不同的ABI以及不同的密度分别打包
重复的string,color优化
过滤重复的string
定义唯一的color名
减少enum的使用
每减少一个枚举的文件可以减少1K作用的大小
采用常量来定义
优化引用的库
去除不使用的库
优化过时的库
仅仅提取使用的代码
选用更小的外部库
音频资源压缩
采用音频压缩工具,压缩音频,降低音频采样率,通道数等在不明显影响效果的前提下,压缩音频
So动态下发
So可以采用动态下发的方式,将So放到服务器,只下载该手机对应型号的So文件即可
下载失败怎么办?
Gradle中指定abiFilter
ndk{
abiFilters:"x86","armeabi-v7a"
}