瘦身优化

2021-03-26  本文已影响0人  flynnny

瘦身优化及Apk分析方案介绍

一般最后才做

瘦身优势

主要是转化率:下载转化率
头部App都有Lite版本
渠道合作商要求

APK组成

代码相关:classes.dex
资源相关:res、asserts、resources.arsc
So相关:lib(这部分优化空间大)

APK分析

1ApkTool反编译工具

apktool d xx.apk

2Analyze ApK :Android Studio 2.2之后
.查看Apk组成、大小、占比
.查看Dex文件组成
.Apk对比

直接把apk放入即可

1.png

3网站

2.png

分析时间长、傻瓜式

4

3.png 4.png

代码瘦身实战

代码混淆

花指令、功能等价但改变形式
1代码中各个元素改成无意义的名字
2以更难理解的形式重写部分逻辑
3打乱代码格式

Proguard:Java类文件处理工具,优化字节码

.代码中元素名称改短,移除冗余代码
.增加代码被反编译的难度
使用:
.配置minifyEnabled为true,debug下不要配置(慢、没用)
.proguard-rules中配置相应规则即可

5.png

proguard-rules:

6.png

三方库处理

基础库统一
选择更小的库,Android Methods Count(此插件能显示方法数)
仅仅引入所需的部分代码:如Fresco的webp支持
修改源码,提取所需功能

如只要 Fresco的webp支持

7.png

移除无用代码

业务代码只加不减
代码太多不敢删除

可通过AOP统计Activity使用情况

8.png 9.png

资源瘦身实战

冗余资源

右键--Refactor--Remove Unused Resource--preview--找到冗余资源

图片压缩

1千行代码--5kb
TinyPngPlugin 图片压缩插件
图片格式选择(webp、png严格保留色彩,jpg忽略一些中间色)

资源混淆

andResGuard
资源路径混淆成单个字母路径

10.png

选择andResGuardRelase

11.png

缩减大概800k

图片只保留一份(比如只存xh)
资源在线化

So瘦身实战

so移除

So是Android上的动态链接库
加解密算法、音视频、
七种不通类型的CPU架构--对应的CPU效率高但体积变大

abiFilters:设置支持的So架构
一般选择armabi(都支持此架构)

12.png

更优方案

完美支持所有机型代价太大

都放在armabi目录,根据CPU类型加载对应架构So

armabi-v7 和armabi都有,代码判断CPu只加载所需的(微信就是这么做的)

伪代码模拟一下

13.png

其他方案

So动态下载
插件化(感兴趣可以看阿里的atls 和360的replg)

瘦身优化模拟面试

怎么降低Apk包大小

结合干货周期
初期加了很多功能、UI图未压缩
稳定期-用户下载意愿

用Analyze ApK 查看Apk组成 体积分析
查看代码、资源、so方面优化
代码:Proguard 混淆、统一三方库(功能相同的库)、无用代码删除--效果不明显
资源:无用资源删除,图片压缩,资源混淆(名称变短)
So:只保留Armeabi、更优方案(代码中做判断)

Apk瘦身问题长效治理

结合CI发版之前与上个版本包体积对比,超过阈值则必须优化

推进插件化改造

上一篇下一篇

猜你喜欢

热点阅读