Android aab AabResGuard 资源混淆配置,坑!

在这里插入图片描述

Google 包现在都要求上传 AAB 包(App bunlde),那么就会有混淆 res 资源的需求

我们以前出 apk 包用的是微信资源混淆工具


AabResGuard 资源混淆插件配置

apply plugin: "com.bytedance.android.aabResGuard"

aabResGuard {
    // 用于增量混淆的 mapping 文件
    // mappingFile = file("aab-res-mapping.txt").toPath()

    enableObfuscate = true
    // 过滤字符串
    enableFilterStrings = false

    // 过滤文案列表路径 默认在mapping同目录查找
    unusedStringPath = file("unused.txt").toPath()

    // 混淆后的文件名称,必须以 `.aab` 结尾
    obfuscatedBundleFileName = "aab-res-obs-output.aab"

    // 是否允许去除重复资源
    mergeDuplicatedRes = true

    // 是否允许过滤文件
    enableFilterFiles = true

    // 文件过滤规则
    filterList = [
            "*/arm64-v8a/*",
            "META-INF/*"
    ]

    // 保留en,en-xx,zh,zh-xx等语言,其余均删除
    // languageWhiteList = ["en", "zh"]

    // 白名单规则
    whiteList = [
		"*.R.raw.*",
        "*.R.drawable.icon"
	]
}

这是官网给的例子,只举例的配置 资源 Id 白名单

    whiteList = [
		"*.R.raw.*",
        "*.R.drawable.icon"
	]

但是没有说如何配置 资源文件 白名单

正确配置

我们这里重点关注 whiteList 白名单配置

1、资源 Id 白名单配置

  • 正确配置:"*.R.layout.activity_union*"
  • 不同点:资源 Id 所在文件是 aab 包的 resource.pb 文件中

在这里插入图片描述

2、资源文件白名单配置

  • 正确配置:"*/layout/activity_union*"
  • 不同点:布局资源文件所在位置是 aab 包的 res 目录下
  • 资源文件种类:包括 res 目录下的所有子目录资源
    • anim
    • animator
    • color
    • drawable
    • interpolator
    • layout
    • xml
    • … …

在这里插入图片描述

3、资源 Id 白名单配置的特殊情况

先前我们出 apk 包,使用微信的资源混淆工具 AndResGuard 已经积累了大量的白名单配置

现在要全部迁移到 AAB 白名单配置

有这一种白名单:当时使用的是 id,现在我们已经不记得该资源类型是什么了

  • "*.R.id.thinkup_*",

我们知道,这有很多种资源类型:

  • "*.R.array.*"
  • "*.R.attr.*"
  • "*.R.bool.*"
  • "*.R.color.*"
  • "*.R.dimen.*"
  • "*.R.style.*"
  • "*.R.string.*"
  • "*.R.id.*"
  • "*.R.integer.*"
  • "*.R.plural.*"
  • "*.R.plurals.*"
  • "*.R.item.*"

为了适配这种情况,我们需要使用 * 正则匹配

"*.R.id.thinkup_*" 改成 "*.R.*.thinkup_*"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值