Android - App瘦身

为什么要瘦身

  • 安装包变大,导致很多用户不愿意安装更新
  • 安装包变大,导致很多用户不愿意下载
  • 安装包变大,流量使用增多,增加其他边际成本

优化方式

图片资源的优化
图片选择顺序
  1. 首先选选择SVG
  2. 否则选择WebP
  3. 之后如果有透明通道等选择PNG
  4. 剩下的选择JPG
AS可将PNG转为WebP

在这里插入图片描述
对比效果如下
在这里插入图片描述

PNG压缩
  • 可以采用ImageOptim或者Pngyu对png进行压缩
  • AAPT会使用内置的压缩算法来优化res/drawable/目录下的PNG图片,但也可能会导致本来已经优化过的图片体积变大,可以禁止aapt优化PNG图片
	aaptOptions{
		cruncherEnabled = false
	}

测试之后,发现不但没变小,apk包反而变大了几十k。。。

Jpg图片压缩

可以采用packJPG或者guetzli压缩jpg图片

只放一份资源

推荐放在xxhdpi

资源压缩
开启代码混淆、去除无用资源

在这里插入图片描述

进一步资源混淆

微信开源了AndResGuard工具,对资源进一步混淆

冗余代码优化

冗余代码的定义

  • 完全一致的代码或者只修改了空格和注释
  • 结构上和句法上一致的代码,例如只是修改了变量名
  • 插入和删除了部分代码
  • 功能和逻辑上一致的代码,语义上的拷贝

冗余代码检测
使用工具,例如PMD

- 下载后输入: ./run.sh cpdgui
- pmd -d /usr/src-R rulesets/java/quickstart.xml -f text  

Lint检测
检测未使用资源

Android Studio -> Analyze -> Run inspection by Name -> unused resource

无用代码优化

Analyze -> run Inspection By Name -> unused declaration -> Moudule app -> OK

其他的
在这里插入图片描述
在这里插入图片描述

其他优化
压缩存储文件
  • 导入7Zip,压缩存储预置资源
  • 使用时,解压到本地,比如assert中的资源
语言资源优化

在build配置中配置resConfigs指定需要的语言类型

使用Splits根据不同的ABI以及不同的屏幕密度分别打包

https://developer.android.google.cn/studio/build/configure-apk-splits.html

重复的string,color优化
  • 过滤重复的strinng
  • 定义唯一的color名
减少Enum使用
  • 每减少一个Enum文件可以减少1K左右的大小
  • 采用常量定义
优化引用的库
  • 去除不再使用的库
  • 优化过时的库
  • 仅仅提取使用的代码
  • 选用更小的外部库
音频资源压缩

压缩音频,降低采样率、通道数

so动态下发
  • So可以采用动态下发的方式加载 – 下载失败怎么办 ?
  • 仅需要加载对于abi下的so
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

氦客

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值