anirudhmalik/apktool-android
GitHub: anirudhmalik/apktool-android
一个将 Apktool 完整的 APK 解码→编辑→重构建流程封装为 Android 本地库的 AAR,使应用无需桌面 CLI、Termux 或 Root 即可在进程内完成 APK 反编译与重打包。
Stars: 1 | Forks: 0
# apktool-android
[](https://github.com/anirudhmalik/apktool-android/actions/workflows/android.yml)
[](https://github.com/anirudhmalik/apktool-android/actions/workflows/release.yml)
[](LICENSE.md)
**apktool-android** 是一个 Android 库 (AAR),可以在**你的应用进程内**运行 Apktool 的解码 → 编辑项目树 → 重新构建流程。你可以在磁盘上获得一个常规的 resource/smali 工作区以及重新构建的 APK,而无需依赖桌面端 CLI、Termux、`adb shell` 或 root 权限。该 AAR 包含针对每个 ABI 的 **`libaapt2.so`**(完全静态,使用 NDK 构建)以及一个小型入口点——`ApktoolAndroid.configure(Context)`——它将 Apktool 指向 Android 上可安全执行的路径(`nativeLibraryDir`,应用的 `filesDir` / `cacheDir`)。
## 范围
| 在范围内 | 不在范围内 |
|----------|----------------|
| 使用带有 Android 安全 `Config` 的 `ApkDecoder` / `ApkBuilder` 在应用内解码/构建 | 安装或记录桌面版 **apktool** JAR/CLI 工作流 |
| 捆绑的 `aapt2`,形式为 `libaapt2.so` + `aapt2-build/` 下的可选自构建文档 | 上游 Apktool 功能路线图的 Fork 维护 |
## 文档
| 文档 | 目的 |
|-----|---------|
| **[USAGE.md](USAGE.md)** | Android 集成:Gradle、manifest、`ApktoolAndroid`、完整的 `Config` 参考、线程、堆、发行版 |
| **[aapt2-build/README.md](aapt2-build/README.md)** | 为 `jniLibs/` 重新构建并安装 `libaapt2.so`;输出约定;许可证说明 |
| **[aapt2-build/SELF_BUILD_PLAN.md](aapt2-build/SELF_BUILD_PLAN.md)** | 自构建策略、补丁栈和历史操作手册 |
| **[aapt2-build/patches/README.md](aapt2-build/patches/README.md)** | 规范补丁与配方本地补丁;重新导出程序 |
## 构建 (library AAR)
```
./gradlew :brut.apktool:apktool-android:assembleRelease
# 输出: brut.apktool/apktool-android/build/outputs/aar/apktool-android-release.aar
```
有关 `apktool-lib` 上的 JVM/单元测试和插桩测试,请参阅 [USAGE.md 中的 Building from source](USAGE.md#building-from-source)。
## 致谢
- **[iBotPeaches/Apktool](https://github.com/iBotPeaches/Apktool)** — 资源表、smali/DEX 和重新构建 pipeline 位于 `apktool-lib` 中,并来自主 Apktool 项目。**apktool-android** 仅增加了 Android 打包、路径和 `aapt2` 二进制文件的处理。
- **[ReVanced/aapt2](https://github.com/ReVanced/aapt2)** — 交叉编译配方(CMake、AOSP submodule pin、补丁流程)被放置在 `aapt2-build/recipe/` 下,并按照 `aapt2-build/README.md` 中的说明进行了扩展。
- **关键的 `aapt2` 补丁(作者)** — 我们将规范的差异文件保留在 `aapt2-build/patches/` 下,用于审计和署名:
- [**0001** — 针对自定义 `aapt2` 用法的 Apktool 移植更改](aapt2-build/patches/0001-aapt2-port-changes-for-apktool.patch) — **[Connor Tumbleson](https://github.com/iBotPeaches)**。记录了为 Apktool 驱动的 `aapt2` 所做的基础宽容度/链接工作;配方构建应用了 ReVanced 的 `apktool_ibotpeaches.patch`,它是该文件的**超集**(参见 [patches/README.md](aapt2-build/patches/README.md))。
- [**0002** — 解除 `- ` 标签的值格式限制](aapt2-build/patches/0002-aapt2-unrestrict-item-tag-value-format.patch) — **[Igor Eisberg](https://github.com/IgorEisberg)**(补丁作者;在 Apktool 端作为 **PR #3130** 被合并)。允许 `aapt2` 接受现代的 `
- ` 模式,这样 Play Store 风格的 APK 就可以在不抛出 `invalid value for type 'layout'. Expected a reference.` 错误的情况下重新构建。在实时构建中,一个重新定位根目录的副本被应用在 ReVanced 的补丁栈之上([patch stack](aapt2-build/README.md#patch-stack))。
## 许可证
Apache-2.0 — 详见 [LICENSE.md](LICENSE.md)。放置在 `aapt2-build/recipe/` 下的 ReVanced 构建脚本为 GPL-3.0(它们的 `LICENSE` 已被保留)。发布的 `libaapt2.so` 二进制文件和 AAR **不是** GPL-3.0;请参阅 [aapt2-build/README.md 中的许可证说明](aapt2-build/README.md#licence-story)。
标签:AAPT2, AAR, Android库, Apktool, APK反编译, APK重新打包, Bash脚本, CSV导出, JS文件枚举, libaapt2.so, NDK开发, smali, 云资产清单, 包管理, 后台面板检测, 域名枚举, 安卓开发, 应用修改, 应用编辑, 无Root, 本地构建, 目录枚举, 移动安全, 脱离Termux, 资源解析, 逆向工程