Introduction
Jadx is an open-source tool that decompiles Android DEX bytecode and APK files into human-readable Java source code. It provides both a command-line interface and a Swing-based GUI with code navigation, search, and syntax highlighting, making it a go-to for Android security research and app analysis.
What Jadx Does
- Decompiles DEX, APK, AAR, AAB, and class files to Java source
- Provides a searchable GUI with syntax highlighting and cross-references
- Supports deobfuscation with mapping files (ProGuard, R8)
- Exports decompiled projects as Gradle-ready source trees
- Handles Kotlin metadata for improved output readability
Architecture Overview
Jadx operates in two phases: first it parses Dalvik bytecode into an intermediate representation using its own IR, then it applies a series of optimization and deobfuscation passes before emitting Java source. The GUI is built on Swing with a custom code viewer that provides click-through navigation between classes, methods, and fields.
Self-Hosting & Configuration
- Download release JARs from GitHub or install via Homebrew/Scoop
- Requires Java 11+ runtime to execute
- CLI flags control output directory, thread count, and deobfuscation
- Mapping files can be supplied with
--deobf-cfg-filefor readable names - Plugin system allows custom decompilation passes
Key Features
- Full APK-to-source decompilation in a single command
- Interactive GUI with code search, usage tracking, and text highlighting
- Resource decoding for AndroidManifest.xml, layouts, and assets
- Multi-threaded decompilation for faster processing on large apps
- Active development with regular releases and broad format support
Comparison with Similar Tools
- APKTool — focuses on resource decoding and APK rebuilding rather than source recovery
- JADX vs JD-GUI — Jadx handles DEX natively while JD-GUI targets JVM class files
- Procyon — Java-only decompiler without Android-specific handling
- CFR — strong Java decompiler but lacks Android resource support
- Bytecode Viewer — wraps multiple decompilers but Jadx offers a cleaner standalone experience
FAQ
Q: Can Jadx decompile obfuscated APKs? A: Yes. Jadx applies its own deobfuscation heuristics and accepts ProGuard/R8 mapping files for name recovery.
Q: Does Jadx support Kotlin? A: Jadx reads Kotlin metadata annotations and uses them to improve output, though the result is still Java source code.
Q: Can I recompile the output? A: Jadx's Gradle export produces a project structure you can open in Android Studio, but full recompilation depends on completeness of the decompiled code.
Q: Is Jadx suitable for large apps? A: Yes. Multi-threaded mode and incremental loading in the GUI handle apps with thousands of classes efficiently.