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-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