首页功能指南工具开始使用价格字典博客反馈English
Pro Feature

Resource Obfuscation

使用 AabResGuard 混淆 Android 应用资源,把可读资源标识符改成更短、更难理解的名称,降低 APK 体积并增加一层逆向分析成本。

ADB Pro Resource Obfuscation 面板,展示 AabResGuard 配置、白名单规则和执行控制
JetBrains IDE 内的 Res Guard 实际配置和执行界面。

介绍

Resource Obfuscation,也就是 Res Guard,将 AabResGuard 集成到 IDE 工作流。AabResGuard 可以混淆 AAB/APK 中的 Android 资源名称,把 ic_launcher_backgroundstrings_app_name 这类可读标识符替换为短且无意义的名称。

ADB Pro 管理完整 AabResGuard 生命周期:下载和管理 JAR,把选中的 JAR 复制到 Android 项目的 Gradle plugin 目录,配置白名单和过滤选项,向 build.gradle.kts 注入 Gradle plugin 配置,并执行资源混淆任务。整个能力集中在 JAR Management、Configuration 和 Execution 三个子区域中。


为什么使用资源混淆?


功能

JAR Management

Res Guard 自动下载和管理 AabResGuard JAR。JAR Management 标签页展示当前版本、下载状态和文件位置。JAR 缺失或过期时,可以一键下载。

Project Gradle Plugin Copy

如果项目需要把 AabResGuard plugin JAR 放入仓库,Res Guard 可以把选中 JAR 复制到项目根目录下的 gradle/plugins/aabresguard/。随后更新 build.gradlebuild.gradle.kts 中匹配的 JAR 路径引用。旧 JAR 会保留,不会自动删除,方便升级出问题时快速回退。

Visual Configuration

Configuration 标签页提供 AabResGuard 可视化编辑器。可以按 raw、drawable、mipmap、string、xml 等资源类型组织白名单,启用或禁用文件过滤、字符串过滤,并配置 SDK 相关白名单。

SDK-Linked Whitelist Rules

当项目配置了第三方 SDK,Res Guard 可以添加必要白名单。Firebase Analytics、Firebase Crashlytics、Google Ads、Pangle、Facebook SDK 和通知资源都有常见预设,避免运行时按名称查找资源失败。

Gradle Injection

Res Guard 可以把 AabResGuard Gradle plugin 配置注入到 build.gradle.kts。注入器会分析已有构建文件结构,寻找合适插入点;如果检测到已有 AabResGuard 配置,会更新而不是重复插入。

Execution and Logging

Execution 标签页运行 AabResGuard 混淆任务,并展示实时日志。你可以看到混淆进度、跳过资源的 warning 和最终输出体积对比。执行日志会带时间戳保存,便于回溯。

Local JAR Import

除了自动下载,也可以从本地路径导入 AabResGuard JAR,适合无网络环境、使用自定义 fork 或公司内部 artifact server 的场景。

Merge Duplicated Resources

开启 mergeDuplicatedRes 后,AabResGuard 会在混淆前合并内容相同的资源文件。对于多 flavor 目录中存在重复资源的项目,这可以明显减小资源表和输出体积。

File Filtering

启用文件过滤后,AabResGuard 只会混淆指定扩展名的资源。默认可覆盖 .png.webp.xml 等常见资源,也可以排除运行时按名称加载的 .json 文件。

Unused String Filtering

启用字符串过滤后,可配合 unused-string list 移除最终输出中未使用的 string resources。对于大型多语言文件尤其有效。

Language Whitelist

字符串过滤开启时,语言白名单可以防止特定 locale 的 string 文件被移除,例如保留 enzh,适合运行时动态选择语言资源的应用。

Variant Selection

AabResGuard 可以针对指定构建变体执行。Gradle 分析步骤会检测 release、freeRelease、paidRelease 等可用变体,并根据选择决定要处理哪个 AAB 输出和执行哪个 Gradle 任务。

Example Configuration

build.gradle.kts
// ADB Pro 注入的 AabResGuard 配置

buildscript {
    dependencies {
        classpath("com.bytedance.android:aabresguard:0.1.10")
    }
}

apply(plugin = "com.bytedance.android.aabresguard")

configure<com.bytedance.android.aabresguard.plugin.AabResGuardExtension> {
    enableObfuscation = true
    obfuscatedBundleName = "app-obfuscated.aab"
    whitelist {
        rule("*/ic_launcher*")
        rule("*/google_app_id")
        rule("*/gcm_defaultSenderId")
        rule("*/ic_stat_*")
    }
}

Supported Resource Types

资源类型白名单示例常见需要白名单的场景
drawable*/ic_launcher*Firebase、Facebook SDK
mipmap*/ic_launcher*启动图标、自适应图标
raw*/google_*Firebase Analytics、Crashlytics
string*/app_nameGoogle Ads、Pangle
xml*/network_security_config网络安全配置

开始使用

  1. 打开 ADB Pro 侧边栏并进入 Res Guard 标签页。
  2. JAR Management 中确认 AabResGuard JAR 已下载。
  3. 如果项目需要持有插件二进制,将选中 JAR 复制到 gradle/plugins/aabresguard/ 并从 IDE 更新 Gradle 引用。
  4. Configuration 中 review 并调整项目白名单。
  5. 根据需要启用或禁用文件过滤和字符串过滤。
  6. 点击 Apply Configuration 将 Gradle plugin 配置注入构建文件。
  7. Execution 中点击 Run AabResGuard 执行资源混淆。
  8. 查看执行日志和输出体积对比。

验证


参考资料

保护应用资源

安装 ADB Pro,在几分钟内把资源混淆加入 Android 构建流程。

获取 ADB Pro