AabResGuard-针对aab 文件的资源混淆工具

2022-12-31  本文已影响0人  放羊娃华振

本工具由字节跳动抖音 Android 团队提供。

特性

针对 aab 文件的资源混淆工具

数据收益

AabResGuard 是抖音Android团队完成的资源混淆工具,目前已经在 Tiktok、Vigo 等多个产品上线多月,目前无相关资源问题的反馈。 具体的数据详细信息请移步 数据收益

快速开始

Gradle plugin

build.gradle(root project) 中进行配置

buildscript {
  repositories {
    mavenCentral()
    jcenter()
    google()
   }
  dependencies {
    classpath "com.bytedance.android:aabresguard-plugin:0.1.0"
  }
}

build.gradle(application) 中配置

apply plugin: "com.bytedance.android.aabResGuard"
aabResGuard {
    mappingFile = file("mapping.txt").toPath() // 用于增量混淆的 mapping 文件
    whiteList = [ // 白名单规则
        "*.R.raw.*",
        "*.R.drawable.icon"
    ]
    obfuscatedBundleFileName = "duplicated-app.aab" // 混淆后的文件名称,必须以 `.aab` 结尾
    mergeDuplicatedRes = true // 是否允许去除重复资源
    enableFilterFiles = true // 是否允许过滤文件
    filterList = [ // 文件过滤规则
        "*/arm64-v8a/*",
        "META-INF/*"
    ]
    enableFilterStrings = false // 过滤文案
    unusedStringPath = file("unused.txt").toPath() // 过滤文案列表路径 默认在mapping同目录查找
    languageWhiteList = ["en", "zh"] // 保留en,en-xx,zh,zh-xx等语言,其余均删除
}

aabResGuard plugin 侵入了 bundle 打包流程,可以直接执行原始打包命令进行混淆。

./gradlew clean :app:bundleDebug --stacktrace

通过 gradle 获取混淆后的 bundle 文件路径

def aabResGuardPlugin = project.tasks.getByName("aabresguard${VARIANT_NAME}")
Path bundlePath = aabResGuardPlugin.getObfuscatedBundlePath()

白名单

不需要混淆的资源. 如果白名单中没有包含你的配置,欢迎提交 PR.

命令行支持

AabResGuard 提供了 jar 包,可以使用命令行直接执行,具体的使用请移步 命令行支持

输出文件

在打包完成后会输出混淆后的文件和相应的日志文件,详细信息请移步 输出文件

版本日志

版本变化日志记录,详细信息请移步 版本日志

代码贡献

阅读详细内容,了解如何参与改进 AabResGuard

贡献者

感谢

https://github.com/bytedance/AabResGuard/blob/develop/wiki/zh-cn/README.md

上一篇 下一篇

猜你喜欢

热点阅读