Loading...

文章背景图

jadx:Android APK 反编译器安装与使用指南

2026-10-27
0
- 字
- 分钟
|

jadx 是一款把 Dex 反编译为 Java 源码的命令行与 GUI 工具,可从 Android Dex、APK、AAB、APKS、XAPK、APKM、ZIP 等文件生成 Java 源代码,也能反编译 Java 字节码(jar/class/aar)和 smali 文件,同时解码 AndroidManifest.xml 与 resources.arsc 里的资源,并内置反混淆器。

一、项目官方信息

项目 信息
GitHub 仓库 https://github.com/skylot/jadx
官方文档 https://github.com/skylot/jadx/wiki
开源协议 Apache-2.0
主要语言 Java(约 92.2%)
Star 数 约 42.0k
最新 Release v1.5.6
运行时 64 位 Java 11+(自带 JRE 包除外)

官方提示:jadx 在大多数情况下无法 100% 反编译,会有错误;遇到问题查 Troubleshooting 指南。

二、官方图片

jadx 官方 Logo:

jadx Logo

jadx-gui 界面:

jadx-gui 界面

三、环境要求

  • 64 位 Java 11 或更高(带 with-jre 的 Windows 包无需自行装 Java)。
  • 从源码构建需 JDK 17+。
  • 无数据库依赖,纯桌面工具。

四、完整安装步骤

1. 下载发布包

到 https://github.com/skylot/jadx/releases/latest 下载 jadx-<version>.zip,解压后进入 bin 目录:

  • jadx:命令行版;
  • jadx-gui:GUI 版。

Windows 上双击 .bat 文件运行;Windows 自带包可直接运行 jadx-gui-<version>.exe。

也可下载最新不稳定构建(nightly.link)。

2. 包管理器安装

Arch Linux:

sudo pacman -S jadx

macOS:

brew install jadx

Flathub:

flatpak install flathub com.github.skylot.jadx

3. 从源码构建(需 JDK 17+)

git clone https://github.com/skylot/jadx.git
cd jadx
./gradlew dist

Windows 用 gradlew.bat。产物放在 build/jadx/bin,并打包成 build/jadx-<version>.zip。

4. 验证

jadx --version

五、使用方法

基本反编译

jadx -d out classes.dex        # 把 dex 反编译到 out 目录
jadx -d out app.apk           # 反编译整个 APK
jadx --log-level ERROR app.apk
jadx --rename-flags "none" classes.dex
jadx --rename-flags "valid, printable" classes.dex
jadx -Pdex-input.verify-checksum=no app.apk

常用选项

-d, --output-dir            输出目录
-r, --no-res                不解码资源
-s, --no-src                不反编译源码
-j, --threads-count          处理线程数(默认 CPU 一半)
--single-class              只反编译单个类
-e, --export-gradle         导出为 gradle 工程
-m, --decompilation-mode     反编译模式:auto/restructure/simple/fallback
--show-bad-code              显示不一致(反编译错误)代码
--deobf                      启用反混淆
--deobf-min / --deobf-max    重命名名称长度范围
--mappings-path              反混淆映射文件(Tiny/Enigma/ProGuard)
--cfg                        保存方法控制流图为 dot
--call-graph                 导出调用图(dot/json)

jadx-gui 特性

  • 语法高亮查看反编译代码;
  • 跳转声明、查找使用、全文搜索;
  • 内置 smali 调试器;
  • 快捷键见 wiki「JADX-GUI-Key-bindings」。

插件管理

jadx plugins -l            # 列出已装插件
jadx plugins -a            # 列出可用插件(市场)
jadx plugins -i <id>       # 安装插件
jadx plugins -u            # 更新插件
jadx plugins --uninstall <id>

作为库使用

可在 Java 工程中以 jadx-core 依赖引入,详见 wiki「Use jadx as a library」。

六、常见问题 FAQ

1. 反编译报错或代码不全? jadx 官方说明无法 100% 反编译,遇到问题看 wiki 的 Troubleshooting Q&A;可加 --show-bad-code 查看失败处。

2. 提示需要 Java? 需 64 位 Java 11+;Windows 可下载自带 JRE 的包,免装 Java。

3. 如何反混淆? 加 --deobf,并可用 --mappings-path 加载 ProGuard/Tiny/Enigma 映射文件。

4. 只想反编译某一个类? 用 --single-class 全限定类名 --single-class-output 输出。

5. 如何导出成可导入 Android Studio 的工程? 用 -e/--export-gradle 导出,--export-gradle-type 可选 android-app/android-library/simple-java。

6. 从源码构建失败? 确认装了 JDK 17+,用 ./gradlew dist 构建;Windows 用 gradlew.bat。

七、跳转链接

  • GitHub 仓库:https://github.com/skylot/jadx
  • Releases:https://github.com/skylot/jadx/releases/latest
  • Wiki:https://github.com/skylot/jadx/wiki
  • Troubleshooting:https://github.com/skylot/jadx/wiki/Troubleshooting-Q&A
  • jadx-gui 特性:https://github.com/skylot/jadx/wiki/jadx-gui-features-overview
评论交流

文章目录