Skip to content
This repository was archived by the owner on Apr 8, 2025. It is now read-only.

Files

Latest commit

8d418b4 · Apr 21, 2020

History

History

zh-cn

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Apr 21, 2020
Nov 25, 2019
Nov 25, 2019
Nov 25, 2019
Oct 16, 2019
Jan 13, 2020

README.md

AabResGuard

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

Download License Bundletool

English | 简体中文

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

特性

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

  • 资源去重: 对重复资源文件进行合并,缩减包体积。
  • 文件过滤: 支持对 bundle 包中的文件进行过滤,目前只支持 MATE-INFO/lib/ 路径下的过滤。
  • 白名单: 白名单中的资源,名称不予混淆。
  • 增量混淆: 输入 mapping 文件,支持增量混淆。
  • 文案删除: 输入按行分割的字符串文件,移除文案及翻译。
  • ???: 展望未来,会有更多的特性支持,欢迎提交 PR & issue。

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

快速开始

  • 命令行工具: 支持命令行一键输入输出。
  • Gradle plugin: 支持 gradle plugin,使用原始打包命令执行混淆。

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 包,可以使用命令行直接执行,具体的使用请移步 命令行支持

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

  • resources-mapping.txt: 资源混淆 mapping,可作为下次混淆输入以达到增量混淆的目的。
  • aab: 优化后的 aab 文件。
  • -duplicated.txt: 被去重的文件日志记录。

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

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

贡献者

感谢