https://github.com/bytedance/aabresguard
The tool of obfuscated aab resources.(Android app bundle资源混淆工具)
https://github.com/bytedance/aabresguard
aab android android-app-bundle resource-obfuscation
Last synced: about 1 year ago
JSON representation
The tool of obfuscated aab resources.(Android app bundle资源混淆工具)
- Host: GitHub
- URL: https://github.com/bytedance/aabresguard
- Owner: bytedance
- License: apache-2.0
- Archived: true
- Created: 2019-11-25T08:28:51.000Z (over 6 years ago)
- Default Branch: develop
- Last Pushed: 2021-11-25T00:59:07.000Z (over 4 years ago)
- Last Synced: 2025-04-08T16:09:18.225Z (about 1 year ago)
- Topics: aab, android, android-app-bundle, resource-obfuscation
- Language: Java
- Homepage:
- Size: 4.59 MB
- Stars: 1,366
- Watchers: 21
- Forks: 194
- Open Issues: 61
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# AabResGuard
The tool of obfuscated aab resources
[  ](https://bintray.com/yeoh/maven/aabresguard-plugin/)
[](LICENSE)
[](https://github.com/google/bundletool)
**[English](README.md)** | [简体中文](wiki/zh-cn/README.md)
> Powered by bytedance douyin android team.
## Features
> The tool of obfuscated aab resources.
- **Merge duplicated resources:** Consolidate duplicate resource files to reduce package size.
- **Filter bundle files:** Support for filtering files in the `bundle` package. Currently only supports filtering in the `MATE-INFO/` and `lib/` paths.
- **White list:** The resources in the whitelist are not to be obfuscated.
- **Incremental obfuscation:** Input the `mapping` file to support incremental obfuscation.
- **Remove string:** Input the unused file splits by lines to support remove strings.
- **???:** Looking ahead, there will be more feature support, welcome to submit PR & issue.
## [Data of size savings](wiki/en/DATA.md)
**AabResGuard** is a resource obfuscation tool powered by the douyin Android team. It has been launched at the end of July 2018 in several overseas products, such as **Tiktok, Vigo**, etc.
There is no feedback on related resource issues.
For more data details, please go to **[Data of size savings](wiki/en/DATA.md)**.
## Quick start
- **Command tool:** Support command line.
- **Gradle plugin:** Support for `gradle plugin`, using the original packaging command to execute obfuscation.
### Gradle plugin
Configured in `build.gradle(root project)`
```gradle
buildscript {
repositories {
mavenCentral()
jcenter()
google()
}
dependencies {
classpath "com.bytedance.android:aabresguard-plugin:0.1.0"
}
}
```
Configured in `build.gradle(application)`
```gradle
apply plugin: "com.bytedance.android.aabResGuard"
aabResGuard {
mappingFile = file("mapping.txt").toPath() // Mapping file used for incremental obfuscation
whiteList = [ // White list rules
"*.R.raw.*",
"*.R.drawable.icon"
]
obfuscatedBundleFileName = "duplicated-app.aab" // Obfuscated file name, must end with '.aab'
mergeDuplicatedRes = true // Whether to allow the merge of duplicate resources
enableFilterFiles = true // Whether to allow filter files
filterList = [ // file filter rules
"*/arm64-v8a/*",
"META-INF/*"
]
enableFilterStrings = false // switch of filter strings
unusedStringPath = file("unused.txt").toPath() // strings will be filtered in this file
languageWhiteList = ["en", "zh"] // keep en,en-xx,zh,zh-xx etc. remove others.
}
```
The `aabResGuard plugin` intrudes the `bundle` packaging process and can be obfuscated by executing the original packaging commands.
```cmd
./gradlew clean :app:bundleDebug --stacktrace
```
Get the obfuscated `bundle` file path by `gradle` .
```groovy
def aabResGuardPlugin = project.tasks.getByName("aabresguard${VARIANT_NAME}")
Path bundlePath = aabResGuardPlugin.getObfuscatedBundlePath()
```
### [Whitelist](wiki/en/WHITELIST.md)
The resources that can not be confused. Welcome PR your configs which is not included in [WHITELIST](wiki/en/WHITELIST.md)
### [Command line](wiki/en/COMMAND.md)
**AabResGuard** provides a `jar` file that can be executed directly from the command line. More details, please go to **[Command Line](wiki/en/COMMAND.md)**.
### [Output](wiki/en/OUTPUT.md)
After the packaging is completed, the obfuscated file and the log files will be output. More details, please go to **[Output File](wiki/en/OUTPUT.md)**.
- **resources-mapping.txt:** Resource obfuscation mapping, which can be used as the next obfuscation input to achieve incremental obfuscate.
- **aab:** Optimized aab file.
- **-duplicated.txt:** duplicated file logging.
## [Change log](wiki/en/CHANGELOG.md)
Version change log. More details, please go to **[Change Log](wiki/en/CHANGELOG.md)** .
## [Contribute](wiki/en/CONTRIBUTOR.md)
Read the details to learn how to participate in the improvement **AabResGuard**.
### Contributor
* [JingYeoh](https://github.com/JingYeoh)
* [Jun Li]()
* [Zilai Jiang](https://github.com/Zzzia)
* [Zhiqian Yang](https://github.com/yangzhiqian)
* [Xiaoshuang Bai (Designer)](https://www.behance.net/shawnpai)
## Thanks
* [AndResGuard](https://github.com/shwenzhang/AndResGuard/)
* [BundleTool](https://github.com/google/bundletool)