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

Resource Obfuscation,也就是 Res Guard,将 AabResGuard 集成到 IDE 工作流。AabResGuard 可以混淆 AAB/APK 中的 Android 资源名称,把 ic_launcher_background 或 strings_app_name 这类可读标识符替换为短且无意义的名称。
ADB Pro 管理完整 AabResGuard 生命周期:下载和管理 JAR,把选中的 JAR 复制到 Android 项目的 Gradle plugin 目录,配置白名单和过滤选项,向 build.gradle.kts 注入 Gradle plugin 配置,并执行资源混淆任务。整个能力集中在 JAR Management、Configuration 和 Execution 三个子区域中。
Res Guard 自动下载和管理 AabResGuard JAR。JAR Management 标签页展示当前版本、下载状态和文件位置。JAR 缺失或过期时,可以一键下载。
如果项目需要把 AabResGuard plugin JAR 放入仓库,Res Guard 可以把选中 JAR 复制到项目根目录下的 gradle/plugins/aabresguard/。随后更新 build.gradle 或 build.gradle.kts 中匹配的 JAR 路径引用。旧 JAR 会保留,不会自动删除,方便升级出问题时快速回退。
Configuration 标签页提供 AabResGuard 可视化编辑器。可以按 raw、drawable、mipmap、string、xml 等资源类型组织白名单,启用或禁用文件过滤、字符串过滤,并配置 SDK 相关白名单。
当项目配置了第三方 SDK,Res Guard 可以添加必要白名单。Firebase Analytics、Firebase Crashlytics、Google Ads、Pangle、Facebook SDK 和通知资源都有常见预设,避免运行时按名称查找资源失败。
Res Guard 可以把 AabResGuard Gradle plugin 配置注入到 build.gradle.kts。注入器会分析已有构建文件结构,寻找合适插入点;如果检测到已有 AabResGuard 配置,会更新而不是重复插入。
Execution 标签页运行 AabResGuard 混淆任务,并展示实时日志。你可以看到混淆进度、跳过资源的 warning 和最终输出体积对比。执行日志会带时间戳保存,便于回溯。
除了自动下载,也可以从本地路径导入 AabResGuard JAR,适合无网络环境、使用自定义 fork 或公司内部 artifact server 的场景。
开启 mergeDuplicatedRes 后,AabResGuard 会在混淆前合并内容相同的资源文件。对于多 flavor 目录中存在重复资源的项目,这可以明显减小资源表和输出体积。
启用文件过滤后,AabResGuard 只会混淆指定扩展名的资源。默认可覆盖 .png、.webp、.xml 等常见资源,也可以排除运行时按名称加载的 .json 文件。
启用字符串过滤后,可配合 unused-string list 移除最终输出中未使用的 string resources。对于大型多语言文件尤其有效。
字符串过滤开启时,语言白名单可以防止特定 locale 的 string 文件被移除,例如保留 en 和 zh,适合运行时动态选择语言资源的应用。
AabResGuard 可以针对指定构建变体执行。Gradle 分析步骤会检测 release、freeRelease、paidRelease 等可用变体,并根据选择决定要处理哪个 AAB 输出和执行哪个 Gradle 任务。
| 资源类型 | 白名单示例 | 常见需要白名单的场景 |
|---|---|---|
| drawable | */ic_launcher* | Firebase、Facebook SDK |
| mipmap | */ic_launcher* | 启动图标、自适应图标 |
| raw | */google_* | Firebase Analytics、Crashlytics |
| string | */app_name | Google Ads、Pangle |
| xml | */network_security_config | 网络安全配置 |
gradle/plugins/aabresguard/ 并从 IDE 更新 Gradle 引用。Resources.NotFoundException 或类似运行时异常。