jadx Documentation

Java library by @skylot focused on android, decompiler, dex. Includes documentation and AI agent context with 50k stars.

49,959 stars Java Java 1 file ยท ~1,460 tokens #android#decompiler#dex#java
RAW Doc

File: README.md

JADX

jadx - Dex to Java decompiler

Command line and GUI tools for producing Java source code from Android Dex and Apk files

[!WARNING]
Please note that in most cases jadx can't decompile all 100% of the code, so errors will occur.
Check Troubleshooting guide for workarounds.

Main features:

  • decompile Dalvik bytecode to Java code from APK, dex, aar, aab and zip files
  • decode AndroidManifest.xml and other resources from resources.arsc
  • deobfuscator included

jadx-gui features:

  • view decompiled code with highlighted syntax
  • jump to declaration
  • find usage
  • full text search
  • smali debugger, check wiki page for setup and usage

Jadx-gui key bindings can be found here

See these features in action here: jadx-gui features overview

Download

After download unpack zip file go to bin directory and run:

  • jadx - command line version
  • jadx-gui - UI version

On Windows run .bat files with double-click
Note: ensure you have installed Java 11 or later 64-bit version.
For Windows, you can download it from oracle.com (select x64 Installer).

Install

  • Arch Linux

    bash
    sudo pacman -S jadx
  • macOS
    bash
    brew install jadx
  • Flathub
    bash
    flatpak install flathub com.github.skylot.jadx

Use jadx as a library

You can use jadx in your java projects, check details on wiki page

Build from source

JDK 17 or higher must be installed:

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

(on Windows, use gradlew.bat instead of ./gradlew)

Scripts for run jadx will be placed in build/jadx/bin
and also packed to build/jadx-<version>.zip

Usage

text
/* Detailed source-code truncated for AI context efficiency. */

These options also work in jadx-gui running from command line and override options from preferences' dialog

Usage for plugins command

text
usage: plugins [options]
options:
  -i, --install <locationId>      - install plugin with locationId
  -j, --install-jar  - install plugin from jar file
  -l, --list                      - list installed plugins
  -a, --available                 - list available plugins from jadx-plugins-list (aka marketplace)
  -u, --update                    - update installed plugins
  --uninstall           - uninstall plugin with pluginId
  --disable             - disable plugin with pluginId
  --enable              - enable plugin with pluginId
  --list-all                      - list all plugins including bundled and dropins
  --list-versions <locationId>    - fetch latest versions of plugin from locationId (will download all artefacts, limited to 10)
  -h, --help                      - print this help

Troubleshooting

Please check wiki page Troubleshooting Q&A

Contributing

To support this project you can:

  • Post thoughts about new features/optimizations that important to you
  • Submit decompilation issues, please read before proceed: Open issue
  • Open pull request, please follow these rules: Pull Request Process

Licensed under the Apache 2.0 License


File: config/jflex/README.md

Refer to the following instructions to modify and use to generate SmaliTokenMarker

shell
jflex SmaliTokenMaker.flex --skel skeleton.default

File: jadx-commons/jadx-zip/README.md

jadx zip

Custom zip reader implementation to fight tampering and provide additional security checks


File: jadx-commons/jadx-app-commons/README.md

jadx app commons

This module contains common utilities used in jadx apps (cli and gui) and not needed in jadx-code module:

  • JadxCommonFiles - wrapper for dev.dirs:directories lib to get
    'config' and 'cache' directories in cross-platform way
  • JadxCommonEnv - utils for work with environment variables

File: jadx-plugins/jadx-input-api/README.md

jadx-input-api

Base API for code input used in jadx.

Contains common data structures to support both java and dex bytecode.


File: jadx-plugins-tools/src/main/java/jadx/plugins/tools/resolvers/README.md

Supported publish locations for Jadx plugins


GitHub release artifact

Pattern: github:<owner>:<repo>[:<version>][:<artifact name prefix>]

Examples: github:skylot:jadx, github:skylot:jadx:sample-plugin or github:skylot:jadx:0.1.0

<version> - exact version to install (optional), should be equal to release name

Artifact name pattern: <artifact name prefix>[-<release-version-name>].jar.

Default value for <artifact name prefix> is a repo name, -<release-version-name> is optional.


Local file

Install local jar file.

Pattern: file:.jar

Example: file:/home/user/plugin.jar

As alternative to install, plugin jars can be copied to plugins/dropins folder.