id = "jadx" name = "JADX" homepage = "https://github.com/skylot/jadx" description = "Dex to Java decompiler" executables = ["jadx"] [dotfiles] # https://github.com/skylot/jadx/blob/master/jadx-commons/jadx-app-commons/src/main/java/jadx/commons/app/JadxCommonFiles.java # and https://github.com/dirs-dev/directories-jvm — JADX uses # ProjectDirectories.from("io.github", "skylot", "jadx") for its config # directory; the CLI's default config file is cli.json within it. paths = [ "[configHome]/jadx/cli.json", "~/Library/Application Support/io.github.Skylot.Jadx/cli.json", "%APPDATA%/skylot/jadx/config/cli.json", ] secret = [] [commands] format = 1 label = "Decompile to Java" description = "Decompile an APK, dex, jar or similar file into Java sources. Plugin options and the less common code-generation switches are left out." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = false, short_attached = true, short_bundles = false } [[commands.source]] id = "help" kind = "help" url = "https://github.com/skylot/jadx/blob/master/README.md" revision = "README usage" evidence = """ jadx[-gui] [command] [options] (.apk, .dex, .jar, .class, .smali, .zip, .aar, .arsc, .aab, .xapk, .apkm, .apks, .jadx.kts) -d, --output-dir - output directory -r, --no-res - do not decode resources -s, --no-src - do not decompile source code -j, --threads-count - processing threads count, default: half of CPU threads --single-class - decompile a single class, full name, raw or alias -e, --export-gradle - save as gradle project (set '--export-gradle-type' to 'auto') -m, --decompilation-mode - code output mode: 'auto' - trying best options (default) 'restructure' - restore code structure (normal java code) 'simple' - simplified instructions (linear, with goto's) 'fallback' - raw instructions without modifications --show-bad-code - show inconsistent code (incorrectly decompiled) --no-imports - disable use of imports, always write entire package name --escape-unicode - escape non latin characters in strings (with \\u) --deobf - activate deobfuscation -v, --verbose - verbose output (set --log-level to DEBUG) -q, --quiet - turn off output (set --log-level to QUIET) --version - print jadx version """ [[commands.field]] id = "input" label = "Input file" type = "path" path = { kind = "file", role = "input" } position = 0 sources = ["help"] [[commands.field]] id = "output_dir" label = "Output directory" type = "path" path = { kind = "directory", role = "output" } option = ["--output-dir", "-d"] sources = ["help"] [[commands.field]] id = "no_res" label = "Skip resources" type = "boolean" option = ["--no-res", "-r"] sources = ["help"] [[commands.field]] id = "no_src" label = "Skip source code" type = "boolean" option = ["--no-src", "-s"] sources = ["help"] [[commands.field]] id = "export_gradle" label = "Export as Gradle project" type = "boolean" option = ["--export-gradle", "-e"] sources = ["help"] [[commands.field]] id = "deobf" label = "Deobfuscate" type = "boolean" option = ["--deobf"] sources = ["help"] [[commands.field]] id = "mode" label = "Decompilation mode" type = "enum" option = ["--decompilation-mode", "-m"] choices = [ { value = "auto", label = "Auto" }, { value = "restructure", label = "Restructure" }, { value = "simple", label = "Simple" }, { value = "fallback", label = "Fallback" }, ] sources = ["help"] [[commands.field]] id = "threads" label = "Threads" type = "integer" option = ["--threads-count", "-j"] sources = ["help"] [[commands.field]] id = "single_class" label = "Single class" type = "string" option = ["--single-class"] sources = ["help"] [[commands.field]] id = "show_bad_code" label = "Show bad code" type = "boolean" option = ["--show-bad-code"] sources = ["help"] [[commands.field]] id = "no_imports" label = "No imports" type = "boolean" option = ["--no-imports"] sources = ["help"] [[commands.field]] id = "escape_unicode" label = "Escape unicode" type = "boolean" option = ["--escape-unicode"] sources = ["help"] [[commands.field]] id = "verbose" label = "Verbose" type = "boolean" option = ["--verbose", "-v"] sources = ["help"] [[commands.field]] id = "quiet" label = "Quiet" type = "boolean" option = ["--quiet", "-q"] sources = ["help"] [[commands.task]] id = "decompile" label = "Decompile" fields = ["input", "output_dir", "deobf", "no_res"] required = ["input", "output_dir"] [[commands.task]] id = "gradle" label = "Export Gradle project" set = { export_gradle = [true] } lock = ["export_gradle"] fields = ["input", "output_dir", "export_gradle", "deobf"] required = ["input", "output_dir"] [[commands.group]] id = "basic" label = "Basic" fields = ["input", "output_dir", "no_res", "no_src", "export_gradle", "deobf"] [[commands.group]] id = "advanced" label = "Advanced" fields = ["mode", "threads", "single_class", "show_bad_code", "no_imports", "escape_unicode", "verbose", "quiet"]