【Android】apk瘦身技术分享

背景

随着业务迭代,apk体积逐渐变大。项目中积累的无用资源,未压缩的图片资源等,都为apk带来了不必要的体积增加。调研了一些apk瘦身的方法后,总结如下。


可用方法

1.删除无用资源 

2.删除无用方法 

3.混淆(方法混淆&资源混淆 

4.使用一套图片资源 

5.图片压缩/其他图片格式 

6.so兼容一个平台,动态下载

7.精简第三方库


删除无用资源

1⃣️开启ShrinkResource

在build.gradle中配置shrinkResource=true

首先介绍一下shrinkResource的原理:在打包过程中会多出一个task,通过调用一个analyze方法进行无用资源的分析并进行处理,具体过程

1)根据R文件生成资源表,然后遍历所有的class文件,分析class中使用的资源,标记可达。

2)分析Manifest res,分析资源文件引用的其他资源,标记可达。

3)调用keepPossiblyReferencedResources,标记可能到达的资源。比如通过getIdentifier动态获取的资源⬇以下代码会将所有带有img_前缀的资源标记为已使用。

                   String name = String.format("img_%1d", angle + 1);

                   res = getResources().getIdentifier(name, "drawable", getPackageName());

(如果想开启严格检测,不标记可能到达的资源,在keep.xml配置 tools:shrinkMode="strict",对于不进行严格检测的资源,配置tools:keep 风险:开启严格检测可能导致程序有bao

⚠️然而,经过实验发现,开启shrinkResource并没有使apk变小。因为在打包时,无用资源并没有直接被清理,而是把部分无用资源用更小的东西代替掉。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值