八. Android apk体积优化

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

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

Apk组成(压缩包)

代码相关:classes.dex
资源相关:res、asserts、resources.arsc
so相关:lib

Apk分析

1)ApkTool,反编译工具
官网:https://ibotpeaches.github.io/Apktool/

apktool d xx.apk

2)Analyze APK
查看Dex文件组成、Apk对比

3)https://nimbledroid.com/
文件大小及排行
Dex方法数、SDK方法数
启动时间、内存等

4)android-classyshark:二进制检查工具
https://github.com/google/android-classyshark
支持多种格式:Apk、Jar、Class、So等
方法数的比例等。

2. 代码瘦身实战

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

Proguard:Java类文件处理工具,优化字节码
代码中元素名称改短,移除荣誉代码
增加代码被反编译难度
使用方式:配置minifyEnabled为true,debug下不要配置
proguard-rules 中配置相应规则

三方库处理
基础库统一
选择更小的库,Android Methods Count
仅引入所需的部分代码:Fresco 的 webp 支持

移除无用代码(AOP统计使用情况)
业务代码只加不减
业务太多不敢删除

3. 资源瘦身实战

冗余资源
右键,Refactor,Remove Unused Resource

图片压缩
tinypng.com。TinyPngPlugin

图片格式选择

资源混淆
https://github.com/shwenzhang/AndResGuard

冗长的资源路径变短

其它
图片只保留一份
资源在线化

4. So瘦身实战

So是Android上的动态链接库
So移除

七种不同类型的CPU架构
abiFilters:设置支持的So架构
一般选择armeabi

更优方案
完美支持所有类型设备代价太大
都放在armeabi目录,根据CPU类型加载对应架构So

其它方案
So动态下载
插件化

5. 瘦身优化模拟面试

怎么降低Apk包大小?
代码:Proguard、统一三方库、无用代码删除
资源:无用资源删除、混淆
So:只保留Armeabi、更优方案
Apk瘦身问题长效治理
发版之前与上个版本体积对比,超过阈值则必须优化
推进插件化架构改造

使用这个直接去除微用到的方法 https://github.com/KeepSafe/dexcount-gradle-plugin

你可能感兴趣的:(八. Android apk体积优化)