jadx

Security & PrivacyApache-2.0

jadx release notes.

Latest v1.5.6 · by jadxWritten in JavaWebsiteskylot/jadxRSS

Release activity

Release activity — 3 releases across 3 days in the last year. Each cell is one day; darker means more releases that day. Older weeks are hidden at this screen width.
JunJulAugSep
SundayNo releases on May 31, 2026No releases on Jun 7, 2026No releases on Jun 14, 2026No releases on Jun 21, 2026No releases on Jun 28, 2026No releases on Jul 5, 2026No releases on Jul 12, 2026No releases on Jul 19, 2026No releases on Jul 26, 2026No releases on Aug 2, 2026No releases on Aug 9, 2026No releases on Aug 16, 2026No releases on Aug 23, 2026No releases on Aug 30, 2026No releases on Sep 6, 2026No releases on Sep 13, 2026
MondayNo releases on Jun 1, 2026No releases on Jun 8, 2026No releases on Jun 15, 2026No releases on Jun 22, 2026No releases on Jun 29, 2026No releases on Jul 6, 2026No releases on Jul 13, 2026No releases on Jul 20, 2026No releases on Jul 27, 2026No releases on Aug 3, 2026No releases on Aug 10, 2026No releases on Aug 17, 2026No releases on Aug 24, 2026No releases on Aug 31, 2026No releases on Sep 7, 2026No releases on Sep 14, 2026
TuesdayNo releases on Jun 2, 2026No releases on Jun 9, 2026No releases on Jun 16, 2026No releases on Jun 23, 2026No releases on Jun 30, 2026No releases on Jul 7, 2026No releases on Jul 14, 2026No releases on Jul 21, 2026No releases on Jul 28, 2026No releases on Aug 4, 2026No releases on Aug 11, 2026No releases on Aug 18, 2026No releases on Aug 25, 2026No releases on Sep 1, 2026No releases on Sep 8, 2026
WednesdayNo releases on Jun 3, 2026No releases on Jun 10, 2026No releases on Jun 17, 2026No releases on Jun 24, 2026No releases on Jul 1, 2026No releases on Jul 8, 2026No releases on Jul 15, 2026No releases on Jul 22, 2026No releases on Jul 29, 2026No releases on Aug 5, 2026No releases on Aug 12, 2026No releases on Aug 19, 2026No releases on Aug 26, 2026No releases on Sep 2, 2026No releases on Sep 9, 2026
ThursdayNo releases on Jun 4, 2026No releases on Jun 11, 2026No releases on Jun 18, 2026No releases on Jun 25, 2026No releases on Jul 2, 2026No releases on Jul 9, 2026No releases on Jul 16, 2026No releases on Jul 23, 2026No releases on Jul 30, 2026No releases on Aug 6, 2026No releases on Aug 13, 2026No releases on Aug 20, 2026No releases on Aug 27, 2026No releases on Sep 3, 2026No releases on Sep 10, 2026
FridayNo releases on Jun 5, 2026No releases on Jun 12, 2026No releases on Jun 19, 2026No releases on Jun 26, 2026No releases on Jul 3, 20261 release on Jul 10, 2026No releases on Jul 17, 2026No releases on Jul 24, 2026No releases on Jul 31, 2026No releases on Aug 7, 2026No releases on Aug 14, 2026No releases on Aug 21, 2026No releases on Aug 28, 2026No releases on Sep 4, 2026No releases on Sep 11, 2026
SaturdayNo releases on Jun 6, 2026No releases on Jun 13, 2026No releases on Jun 20, 2026No releases on Jun 27, 2026No releases on Jul 4, 2026No releases on Jul 11, 2026No releases on Jul 18, 2026No releases on Jul 25, 2026No releases on Aug 1, 2026No releases on Aug 8, 2026No releases on Aug 15, 2026No releases on Aug 22, 2026No releases on Aug 29, 2026No releases on Sep 5, 2026No releases on Sep 12, 2026

3 releases in the last year

Changelog

v1.5.6Latest

1.5.6

Added 9
  • Graph views, code pane sync, and more
  • Collapse single-child directory chains in resource tree
  • Handle pasted file lists in file chooser
  • Show simple message box for file exceptions
  • Allow to create input category node even if no matching files found
  • New module/library for work with call graphs
Changed 1
  • Use queue instead of recursion for type updates
Fixed 6
  • Insert generic casts for variable assigned from fields with known types
  • Handle Kotlin 1.9+ $ENTRIES pattern in enum restoration
  • Remove useless PHI for duplicate moves
  • Support enum restore for constructor without args
  • Handle null bounds in WindowLocation to prevent NPE on dialog dispose
  • Stop type inference on exception to prevent endless loop
Security 3
  • Reject absolute or path to CWD for zip entries
  • Sanitize all string values for gradle scripts on export
  • Add missing escaping on summary page

From jadx

Main features and fixes

Security fixes:

  • Reject absolute or path to CWD for zip entries
  • Sanitize all string values for gradle scripts on export
  • Add missing escaping on summary page

Core:

  • Use queue instead of recursion for type updates

GUI:

  • Graph views, code pane sync, and more (PR #2784)
  • Collapse single-child directory chains in resource tree (PR #2866)
  • Handle pasted file lists in file chooser (PR #2876)
  • Show simple message box for file exceptions (#2659)

API:

  • Allow to create input category node even if no matching files found (#2806)
  • New module/library for work with call graphs (#2890)
All changes
Features
  • [core] Graph views, code pane sync, and more (PR #2784)
  • [core] Use queue instead of recursion for type updates
  • [core] New module/library for work with call graphs (#2890)
  • [gui] Add mimetype for desktop file
  • [gui] Open single loaded class after load
  • [gui] Add "copy reference" to context menu (PR #2863)
  • [gui] Collapse single-child directory chains in resource tree (PR #2866)
  • [gui] Handle pasted file lists in file chooser (PR #2876)
  • [gui] Show simple message box for file exceptions (#2659)
Bug Fixes
  • [core] Insert generic casts for variable assigned from fields with known types (#2776)
  • [core] Handle Kotlin 1.9+ $ENTRIES pattern in enum restoration (PR #2814)
  • [core] Remove useless PHI for duplicate moves (#2813)
  • [core] Support enum restore for constructor without args (#2821)
  • [core] Handle null bounds in WindowLocation to prevent NPE on dialog dispose (PR #2826)
  • [core] Stop type inference on exception (prevent endless loop)
  • [core] Resolve class/package name conflicts on case-insensitive filesystems (PR #2828)
  • [core] Use correct property for OS arch checks (#2830)
  • [core] Use correct args copy/replace in wrapped insns (#2835)
  • [core] Resolve minor decompilation issues (#2835)
  • [core] Remove result in wrapped insntructions (#2835)
  • [core] Limit ternary wrap to one level (#2844)
  • [core] Disable ternary mod for duplicated blocks (#2844)
  • [core] Harden XML parser in FileTypeDetector against XML bomb DoS (PR #2851)
  • [core] Improve handler path check for regions
  • [core] Limit 'if' region out block to current scope (#2791)
  • [core] Build correct file path for class from default package (#2854)
  • [core] Cover more situations for SwitchOverString (PR #2860)
  • [core] Workaround for duplicated variables names index increment (#2868)
  • [core] Resolve duplicated error attr in fallback codegen, allow to set whole attr list at once (#2842)
  • [core] Keep all dimensions for anewarray of an array element type (PR #2887)
  • [core] ImmutableList.lastIndexOf skipping index 0 (PR #2898)
  • [api] Allow to create input category node even if no matching files found (#2806)
  • [build] Set *nix executable permissions on start scripts (PR #2838)
  • [cli] In 'progress' log mode show issues from input plugins (#2803)
  • [gui] Update usage file data version (was changed in PR #2784)
  • [gui] Resolve possible NPE during project data loading (#2794)
  • [gui] Stop token process on NULL token in JadxTokenMaker (#2798)
  • [gui] Use UI thread for scroll in code (#2798)
  • [gui] Make the Split view checkbox correctly toggle between both modes (PR #2801)
  • [gui] Use UI thread for refreshStackFrameList in debugger view (PR #2807)
  • [gui] Use UI thread for adding logcat messages (#2811)
  • [gui] Update zh_CN translation (PR #2812)
  • [gui] Update zh_tw translation (PR #2818)
  • [gui] Move scripts leftover code, save tree state on script run
  • [gui] Resolve "launchScriptPath" is null
  • [gui] Localize code cache mode labels (PR #2825)
  • [gui] Use localized label for code cache preferences
  • [gui] Add file end line feed for exported code (PR #2836)
  • [gui] NullPointerException when changing line wrap mode (PR #2843)
  • [gui] Ensure all fonts are 'composite' (#2856)
  • [gui] Improve code tabs, sync and related code
  • [gui] Improve dot graph viewer, CFG generation simplified
  • [gui] Fix token type error leading to disables right-click context menu rename button (PR #2897)
  • [gui] Verify files and show fix actions, save project inputs hash on load (#2659)
  • [gui] Add missing escaping on summary page
  • [gui] Workaround for CJK support in bundled fonts (#2856)
  • [quark] Change from 'virtualenv' to 'venv' (PR #2879)
  • [res] Use safe number parsing for android manifest, refactor params object (#2857)
  • [script] Update imports in example scripts (#2795)
  • [xapk] Support files in sub-dirs in xapk (#2834)
New Contributors

Full Changelog: https://github.com/skylot/jadx/compare/v1.5.5...v1.5.6

Download files:

For system JRE the latest version is always preferred, download at oracle.com

View originalPermalink
How v1.5.6 went
v1.5.5

1.5.5

Changed 1
  • Insert generic casts for variable assigned from fields with known types
Fixed 4
  • Code area was updated from wrong thread causing many exception report popups, UI freezes and high CPU usage
  • Resolve possible NPE during project data loading
  • Stop token process on NULL token in JadxTokenMaker
  • Make the Split view checkbox correctly toggle between both modes

From jadx

Major bug fixed
  • Code area was updated from wrong thread causing many exception report popups, UI freezes and high CPU usage (#2798)
Other Bug Fixes
  • [gui] Resolve possible NPE during project data loading (#2794)
  • [gui] Stop token process on NULL token in JadxTokenMaker (#2798)
  • [gui] Make the Split view checkbox correctly toggle between both modes (PR #2801)
  • [core] Insert generic casts for variable assigned from fields with known types (#2776)

Full Changelog: https://github.com/skylot/jadx/compare/v1.5.4...v1.5.5

Download files:

For system JRE the latest version is always preferred, download at oracle.com

View originalPermalink
How v1.5.5 went
v1.5.4

1.5.4

Added 5
  • Implement config file load and save in CLI
  • Add option for UI zoom factor in GUI
  • Allow to change limit for type inference updates
  • Support '.apks' files
  • Allow to use '.zip' as plugin artifact with jars inside
Changed 5
  • Change fonts size with UI zoom, use FlatLaf fonts bundle
  • Use FontUtils.getCompositeFont() that supports CJK
  • Select better class from duplicates
  • Report plugin exceptions to plugin github project
  • Scripting plugin now external and not included in release bundle
Fixed 9
  • Avoid false positive throws
  • Resolve race condition in task executor
  • Add missing field code annotation for enum fields in switch-case
  • Resolve rename of inner class using full name
  • Catch all exceptions in type update
  • More file extensions added for file type detection

From jadx

Main features

CLI:

  • Implement config file load and save (#1731)

GUI:

  • Change fonts size with UI zoom, use FlatLaf fonts bundle
  • Use FontUtils.getCompositeFont() that supports CJK (PR #2751)

Plugins:

  • Scripting plugin now external and not included in release bundle. Check jadx-script-kotlin for installation details.
  • Support '.apks' files (PR #2647)
  • Allow to use .zip as plugin artifact (with jars inside)
  • Report plugin exceptions to plugin github project
All changes
Features
  • [core] Allow to change limit for type inference updates (PR #2629)
  • [core] Support '.apks' files (PR #2647)
  • [core] Select better class from duplicates (#2701)(PR #2702)
  • [cli] Implement config file load and save (#1731)
  • [gui] Add option for UI zoom factor (#2720)
  • [gui] Change fonts size with UI zoom, use FlatLaf fonts bundle
  • [gui] Report plugin exceptions to plugin github project
  • [plugins] Allow to use .zip as plugin artifact (with jars inside)
Bug Fixes
  • [core] Minor fixes for type update limit option (#2629)
  • [core] Avoid false positive throws (PR #2636)(#2475)
  • [core] Resolve race condition in task executor
  • [core] Add missing field code annotation for enum fields in switch-case
  • [core] Resolve rename of inner class using full name (#1997)
  • [core] Catch all exceptions in type update (#2668)
  • [core] More file extensions added for file type detection (PR #2670)
  • [core] Enhancements for abnormal situations (PR #2679)
  • [core] Improve decoding errors handling (#2676)
  • [core] Handle OutOfMemoryError to correctly halt processing (#2676)
  • [core] Detect more for-each loops (also prevent issues with missing generics types) (PR #2689)
  • [core] Keep generics while applying debug info (#2687)
  • [core] Respect arg offset for type var mapping on invoke (PR #2698)
  • [core] Extract common switch break, remove unreachable (#2697)
  • [core] Improve common 'break' extract checks (#2697)
  • [core] Correctly handle variable in ternary transform
  • [core] Support 'break' extract for nested 'if' (#2697)
  • [core] Refactor and improve class duplicates removal (#2701)
  • [core] Resolve edge cases for select best classes from duplicates (#2701)
  • [core] Prevent endless loop in region maker on dead code with loops (#2715)
  • [core] Add missing level info for jadx code comments (#2737)
  • [core] Keep wide upcast for arith instructions (#2730)
  • [core] Improve codegen methods for custom decompilation mode
  • [core] Speed up file path security checks (PR #2745)
  • [core] Terminate type inference on first stack overflow (#2744)
  • [core] Add more checks to better find handler's end (PR #2749)
  • [core] Avoid more false positive throws (PR #2752)
  • [core] Improve switch over string restore (#2359)
  • [aab-input] Correct check for '.aab' file (PR #2646)
  • [cli] Distinguish JadxCLI error code (PR #2734)
  • [dex-input] Use length in header for checksum, fix error in Dex v41 (PR #2711)
  • [gui] Handle syntax parsing errors during search (#2669)
  • [gui] Use simple token maker as default to avoid parsing error (#2669)
  • [gui] Update Chinese localization for various menu items (PR #2673)
  • [gui] Split loading and UI update for code area (#2682)
  • [gui] Rework background executor to reduce delay for short tasks
  • [gui] Prevent unlimited recursion in text search (#2685) (PR #2694)
  • [gui] Use correct threads for code from close and reload actions (#2684)
  • [gui] In comment dialog insert new line at current caret position (#2706)
  • [gui] Resolve exception in search dialog on project reload (#2714)
  • [gui] Resolve NPE with smali breakpoint (#2717) (PR #2718)
  • [gui] Do not enforce new nodes method for backward compatibility
  • [gui] Don't init already loaded plugins while collecting options (#2727)
  • [gui] Use FontUtils.getCompositeFont() that supports CJK (PR #2751)
  • [gui] Load class code before resolving jump position to get corrent value
  • [gui] Fix illegal ':' character in path when exporting resources.arsc/res
  • [gui] Use resource short name when exporting a folder via context menu
  • [gui] Use new resource class for files in arsc (#2771)
  • [gui] Limit tabs title length, fix tooltips (#2771)
  • [gui] Go to main activity and application class when class name was renamed by deobfuscator (PR #2779)
  • [java-input] Support Java modified UTF-8 strings (PR #2654)
  • [java-input] Fix dup2_x1 stack to regs conversion for wide types (#2755)
  • [kotlin-metadata] Upgrade to kotlin 2.2 metadata library (PR #2655)
  • [plugins] Improve errors handling and reporting (#2597)
  • [plugins] Reduce plugins-list update checks
  • [plugins] Use class with correct fields for plugins list entry
  • [res] As workaround use INVALID_STRING_PLACEHOLDER when string offset is is negative (#2729)(PR #2739)
  • [res] Prevent problems arising by parsing duplicate resource entries from resources.arsc (#2775)(PR #2777)
  • [res] Back to the old correct resource ID calculation (PR #2788)
  • [smali-input] Use synced list for threaded processing, improve inner classes handling
  • [xapk] Use stream copy to prevent OOM on large files (#2619) (PR #2719)
  • [zip] Check uncompressed size exceeds the maximum value of an integer (PR #2773)

Full Changelog: https://github.com/skylot/jadx/compare/v1.5.3...v1.5.4

New Contributors
View originalPermalink
How v1.5.4 went
v1.5.3

1.5.3

Added 3
  • Enhance AAB parsing
  • Add new search options to search in text or binary resources
  • Allow view and edit input smali files
Changed 1
  • Use compileSdkVersion from manifest, update AGP to 8.10.1, and other improvements
Fixed 16
  • Correct loading for plain text XML files
  • Correct hex format for negative numbers
  • Use 'dev.dirs' JNI implementation only on x86-64
  • Use proper newlines when generating CFG
  • Improve memory usage in jadx-cli
  • Add missing '-XX:+IgnoreUnrecognizedVMOptions' JVM flag

From jadx

Features
  • [aab] Enhance AAB parsing (PR #2557)
  • [gui] New search options to search in text or binary resources (PR #2526)
  • [gui] Allow view and edit input smali files
  • [export] Use compileSdkVersion from manifest, update AGP to 8.10.1, other improvements (PR #2528)
Bug Fixes
  • Correct loading for plain text XML files (PR #2537)
  • Correct hex format for negative numbers (#2531)
  • Use 'dev.dirs' JNI implementation only on x86-64 (#2578)
  • Use proper newlines when generating CFG (PR #2592)
  • [cli] Improve memory usage in jadx-cli (#2524)
  • [cli] Add missing '-XX:+IgnoreUnrecognizedVMOptions' JVM flag (#2554)
  • [gui] Workaround for wrap layout repaint issue in search dialog (PR #2521)
  • [gui] Remove duplicate class of Frida snippet (PR #2525)
  • [gui] Use var instead let for class variable in Frida script (PR #2527)
  • [gui] Prevent IndexOutOfBoundsException in MethodSearchProvider (PR #2542)
  • [gui] Disable debugger action if project not loaded (#2547)
  • [gui] Minor UI fixes (PR #2549)
  • [gui] Resolve NPE on code area close
  • [gui] Fix NullPointerException in copyAllSearchResults (#2580) (PR #2581)
  • [gui] Various tabs related fixes (PR #2595)
  • [zip] Allow to load zip with duplicate names in entries
  • [gui] Improve menu icon, such as 'Select in Tree' and 'Go to AndroidManifest.xml' buttons (PR #2543)
  • [export] Disable targetSDKVersion checks in AndroidStudio (PR #2533)
  • [export] Add missing ExpiringTargetSdkVersion in #2533 (PR #2538)

Full Changelog: https://github.com/skylot/jadx/compare/v1.5.2...v1.5.3

New Contributors
Download files:

For system JRE the latest version is always preferred, download at oracle.com

View originalPermalink
How v1.5.3 went
v1.5.2

1.5.2

Added 20
  • Custom zip reader implementation to fight tampering
  • Gradle export templates supporting android app, android lib, and simple java
  • Initial support for DEX v41
  • Export dialog with options in GUI
  • Tree structure usage search in GUI
  • Dynamic code editor theme from UI theme in GUI

From jadx

Main features

Core:

  • Custom zip reader implementation to fight tampering
  • Add gradle export templates, support android app/lib and simple java
  • Initial support for DEX v41 (#2128)

GUI:

  • Add export dialog with options (PR #2378)
  • A tree structure usage search (PR #2498)
  • Add dynamic code editor theme from UI theme (PR #2471)
  • Add Preview Tab Feature (PR #2474)
  • New HexViewer (PR #2469)

Plugins:

  • Add APKM support (PR #2379)
  • Parse and use Kotlin SourceDebugExtension with SMAP for rename classes and packages (PR #2389)

API:

  • Add 'unload' method to JadxPlugin (#2463)
  • Method to add popup menu entry for tree nodes (#2412)
  • Add method to get jadx-gui icons by name
  • Add method to open usage dialog
All changes
Features
  • Replace constants in annotations of method arguments (PR #2358)
  • Add APKM support (PR #2379)
  • Parse and use Kotlin SourceDebugExtension with SMAP for rename classes and packages (PR #2389)
  • Custom zip reader implementation to fight tampering
  • Add gradle export templates, support android app/lib and simple java
  • Generate missing throws declarations, validate exceptions (#2441) (PR #2475)
  • Move variable name apply from codegen to new pass (#2422)
  • Use parallel jobs to delete files in directory (#2436)
  • [api] Add 'unload' method to JadxPlugin (#2463)
  • [dex-input] Initial support for DEX v41 (#2128)
  • [gradle] Handle non-final res ids for AGP >8.0.0 (PR #2362)
  • [gui] Add webp image preview support (PR #2372)
  • [gui] Add script rename feature (PR #2374)
  • [gui] Added confirm dialog when removing script (PR #2375)
  • [gui] Add export dialog with options (PR #2378)
  • [gui] Add button to install desktop file directly from jadx-gui (PR #2404)
  • [gui] Tabs UI improvements (PR #2419)
  • [gui] Support APK Signature Scheme v3.1 signers (PR #2452)
  • [gui] Add dynamic code editor theme from UI theme (PR #2471)
  • [gui] Allow to set code area theme with custom code (#2471)
  • [gui] Add Preview Tab Feature (PR #2474)
  • [gui] Add "Copy All" button to Search dialog (PR #2480)
  • [gui] New HexViewer (PR #2469)
  • [gui] Added support view and open more resource files (PR #2483)
  • [gui] Added feature to close all left tabs (#1390) (PR #2484)
  • [gui] Added dialog for select methods for generate frida class snippet (PR #2487)
  • [gui] A tree structure usage search (PR #2498)
  • [gui] Notify user if code has non-displayable character with current font (PR #2490)
  • [gui] Add option to disable the tooltip that pops up on hover (PR #2505)
  • [gui] Use list component for recent projects on start page (PR #2513)
  • [plugins] Add method to get jadx-gui icons by name
  • [plugins] Add method to open usage dialog
  • [plugins] New API method to add popup menu entry for tree nodes (#2412)
  • [res] Use file headers to detect extension for obfuscated resources (PR #2495)
  • [tools] Improve tool for sync and update I18N lines (PR #2494)
  • [zip] Provide direct InputStream of ZIP entries (PR #2509)
Bug Fixes
  • Disable usage of JDK Unsafe class in GSON (#2341)
  • Additional checks for default switch case exit (#2351)
  • Check respectBytecodeAccModifiers in MarkMethodsForInline (PR #2361)
  • Inner class parent is wrong when name formatted as Class$method$xxx (PR #2364)
  • Inline anonymous class wrongly handles field as Classname.this (PR #2367)
  • Remove wrapped flag for inlined instruction (#2363)
  • Better package-info support (PR #2369)
  • Force type var short form as a key in generic resolve mapping (#2370)
  • Resolve incorrect var ref validation and remove (#2381)
  • Allow to inline methods with ternary instructions (#2380)
  • Show all methods for 'simple' and 'fallback' decompilation modes
  • IfRegionMaker find the wrong outBlock (PR #2385)
  • Improve rename using source class name (#2397)
  • Use fork of directories library with JNI implemetation for Windows (#2401)
  • Do not replace constant fields which still used in code (#2414)
  • Unload attributes map if empty (#2433)
  • Do not reopen zip file on every resource decode
  • Improve BlockSet class, use it in more places
  • Deduplicate blocks to help 'complex if' restructure (#2445)
  • Scan annotations in usage collector visitor (#2435)
  • Ignore external and invalid class names in signature (#2459)(PR #2460)
  • Collect usage info in generic types
  • Check and report invalid magic in '.dex' files (#2473)
  • Process synthetic resource inner classes using common method (#2482)
  • For static synchronized methods remove top synchronized block (#2493)
  • Wrap MethodThrowsVisitor insns processing in try/catch (#2441)
  • Lazily create dirs in default file getter implementation
  • Use wrap layout for options in search dialog, add size limit option
  • Use resource table file name as prefix in sub files (#2373)
  • Add arsc file name prefix only in jadx-gui (#2373)
  • [cli] Concat new lines in plugin description
  • [gui] Resolve ignored mouse actions (#2360)
  • [gui] Text on popup action change if need update comment & fixes default size on comment diallog (PR #2376)
  • [gui] Improve detection of multi line method comments for update
  • [gui] Add missing sync in clean task at search dialog close (#2363)
  • [gui] Update Messages_zh_CN.properties (PR #2387)
  • [gui] Improve expand tree (speed up and duplicate entries removal) (#2399)
  • [gui] Workaround to force class decompilation in loading task (#2400)
  • [gui] Improve JNode caching (#2400)
  • [gui] New implementation for tree state save/load (#2399)
  • [gui] Set minimum size for comment dialog (#2405)
  • [gui] Skip window pos saving if not changed
  • [gui] Don't ask to save blank project
  • [gui] Save current caret position and add it to tab code jump event (#2409)
  • [gui] Correct class init method actions and highlight (#2412)
  • [gui] Minor action names and icons adjustments (#2419)
  • [gui] Allow file and directory have same name in tree (#2420)
  • [gui] Update Messages_de_DE.properties (PR #2410)
  • [gui] Improve accessibility of preferences dialog (#2445)
  • [gui] Apply log level as early as possible
  • [gui] Update zh_TW translation (PR #2448)
  • [gui] Flatten packages view: non-leaf packages with classes were not visible in the sources tree (PR #2450)
  • [gui] Xposed snippet argument types corrected (PR #2454) (#2458)
  • [gui] Properly handle excluded classes in code search (#2432)
  • [gui] Update Messages_zh_CN.properties (PR #2470)
  • [gui] Add missing annotations color for dynamic theme (#2471)
  • [gui] Improved preview tab behaviors (PR #2477)
  • [gui] Improve apk signature loading speed (PR #2481)
  • [gui] Restore tree state after renaming (PR #2486)
  • [gui] Update resource.arsc nodes after opened tab with resource ids (PR #2489)
  • [gui] Using actual tree in usage tree dialog (PR #2503)
  • [gui] Fix rename package behaviors (PR #2500)
  • [gui] Improve colors in usage tree, some UI fixes (PR #2506)
  • [gui] Minor improved search dialog & small refactor for search fields (PR #2510)
  • [gui] Validate hex address in GotoAddressDialog (PR #2512)
  • [gui] Validate extensions list in file dialog (PR #2515)
  • [gui] Lazy load hex viewer content
  • [gui] Redirect plugins menu action to show plugins settings page
  • [gui] Prevent UI thread freeze on plugin install/uninstall
  • [plugins] Use release from asset if differ from release name with GitHub resolver
  • [res] Allow jumping backwards to an already processed position (PR #2344)
  • [res] Handle null values in android manifest parsing (#2392)
  • [res] Ignore reserved value in type chunk (PR #2403)
  • [res] Chunk parsing was aborted too early for unordered entries (PR #2444)
  • [res] Improve resource table and config decoding (#2420)
  • [res] Fix decode xml attributes value (PR #2492)
  • [smali-input] Improve error report for smali assemble (#2411)
  • [xapk] New implementation to reduce zip unpack and fix NPE (#2501)

Full Changelog: https://github.com/skylot/jadx/compare/v1.5.1...v1.5.2

New Contributors
Download files:

For system JRE the latest version is always preferred, download at oracle.com

View originalPermalink
How v1.5.2 went
v1.5.1

1.5.1

Added 20
  • Support restore of switch over string
  • Add automatic patching for semi-corrupted APKs
  • Support new fields in resource decoding
  • Pin tabs in GUI
  • Quick Tabs in GUI
  • Limit search to a package in GUI

From jadx

Main features

Core:

  • Support restore of switch over string
  • Adding automatic patching for semi-corrupted APKs (PR #2298)
  • Resource decoding support new fields

GUI:

  • Pin tabs (PR #2230)
  • Quick Tabs (PR #2241)
  • Limit search to a package (PR #2284)
  • Add button to go to Application class (#2208)(PR #2213)
  • Export resource/class/package (PR #2228)
  • Smali code folding (PR #2233)
All changes
Features
  • Move AAB support to separate plugin (PR #2165)

  • Allow to change config and cache dirs with env vars (#2159)

  • Support inner class contruction with outer instance (#2253)

  • Add the option to always use source file name as class name alias (PR #2287)

  • Support restore of switch over string (basic case)(#2288)

  • Adding automatic patching for semi-corrupted APKs (PR #2298)

  • Improve better name algorithm (PR #2299)

  • Allow to disable installed plugins (#2277)

  • Give ability to plugins to edit blocks before locking (PR #2336)

  • Add method to update all blocks related info in method (#2335)

  • [api] Add JadxArgs property to adjust xml security checks (#2291)

  • [api] Allow to get method code (#2305)

  • [cli] Add option to disable plugins (#2277)

  • [gui] Allow to check for unstable releases (PR #2200)

  • [gui] Add button to go to Application class (#2208)(PR #2213)

  • [gui] Export resource/class/package (PR #2228)

  • [gui] Pin tabs (PR #2230)

  • [gui] Smali code folding (PR #2233)

  • [gui] Quick Tabs Overhaul (PR #2241)

  • [gui] Limit search to a package (PR #2284)

  • [gui] Add button to go to Android Manifest (PR #2296)

  • [gui] Create Frida hooking snippet for all methods in the class (PR #2328)

  • [java-input] Support StackMapTable to get stack info for unvisited jumps (#2271)

  • [plugins] Get a main window reference as JFrame

  • [plugins] Get config and cache dirs for plugins

  • [plugins] Allow to set minimum required jadx version in plugin info (#2314)

  • [res] Improve error message for unsupported ResTable flags (PR #2266)

  • [res] Support 16-bit entry offsets (PR #2269)

  • [res] Support compact resource entries (#2268)

  • [res] Support grammar inflection flag in res config (#2270)

  • [res] Improve resource names (PR #2316)

Bug Fixes
  • Config dir was used instead cache dir

  • Improve exception handlers checks (#2086)

  • Make detailed var info deterministic (PR #2231)

  • Improve checking if methods are inline for FixAccessModifiers (PR #2235)

  • Don't rerun SSA transform in ConstructorVisitor (#2236)

  • Workaround to make method inline deterministic (#1089)

  • Improve inlining synthetic accessors (PR #2243)

  • Use correct approach to get prev block on path (#2239)

  • Handle quick return on branched constructor (#2240)

  • Improve switch out search in loop (#2246)

  • Improve checking of access modifiers for classes (PR #2251)

  • Improve checking of access modifiers for methods (PR #2252)

  • Improve try/catch temp edges injection (#2247)

  • Improve checking of access modifiers (PR #2255)

  • Improve 'continue' insertion for switch in loop (#2249)

  • Check if debug info offset is invalid (#1653)

  • Additional checks for class signature (#2272)

  • Do not add custom passes for fallback and simple modes (#2276)

  • Protect class deps from loading in different decompilation mode

  • Improve condition branch checks in loops (#2274)

  • Use type from new-instance if differ from constructor call (#2285)

  • Ignore debug lines hints if numbers was adjusted for method

  • Don't add same 'loaded from:' comment for inner classes

  • Improve switch out block search if all method exits are inside (#2264)

  • Improve checks for restore new filled array (#2289)

  • Use temp dir env var only in apps

  • Update reserved keywords (PR #2301)

  • Replace patched zip early in input files (#2302)

  • Add missing null check in codegen for classes generated by jadx

  • Clear temp root dir instead delete (#2312)

  • Fix default branch position in switch-over-string (PR #2331)

  • Prevent endless loop in pre header insertion mod (#2300)

  • Unwrap consts in switch-over-string (PR #2332)

  • Improve negation condition checks for switch over string (#2333)

  • Support "fall-through to default" case in switch-over-string (PR #2338)

  • Insert new filled array insn before first usage (#2340)

  • Fix primitive-to-primitive conversions (PR #2326)

  • [deobf] Update TLDs (PR#2320)

  • [gui] Show correct content of binary resources in hex view (#2160) (PR #2166)

  • [gui] Support filtering files with multiple extensions in file dialog (PR #2185)

  • [gui] Update Messages_zh_CN.properties (PR #2203, PR #2319)

  • [gui] Update russian translation (PR #2209)

  • [gui] Fix Xposed args code generation (PR #2212)

  • [gui] Horizontal scrolling in Linux (PR #2229)

  • [gui] Show folding actions in code popup menu (#2234)

  • [gui] Add VM flags to fix UI ghosting (#2225)

  • [gui] Trim trailing spaces in input files (#2244)

  • [gui] Trim also leading spaces in paths from file dialog (#2244)

  • [gui] Use correct translation in rename dialog (#2254)

  • [gui] Quick Tabs Optimization (PR #2242)

  • [gui] Merge full class name tokens for constructors (#2261)

  • [gui] Prevent UI stuck on class load (#2259)

  • [gui] Minor fixes for code jumps

  • [gui] Resolve old objects reference leak in TabsController

  • [gui] Prevent old refs leak in shortcuts controller

  • [gui] Send select tab event before code jump (#2292)

  • [gui] Update check fixed to match current artifact naming

  • [gui] Improve plugins preferences group

  • [gui] In settings row reduce space between description and value

  • [gui] Use another implementation for font dialog (#2310)

  • [gui] Load plugins settings in temp context without UI (#2206)

  • [gui] Use correct section filter in plugins list

  • [gui] Correct tabs filter in "Close others" tab action (#2330)

  • [launch4j] Do not overwrite Java heap configuration from applicationDefaultJvmArgs (PR #2218)

  • [mappings] Try to prevent mapping file reset on export exception, refactor and fix code to avoid NPE (#2220)(#2226)

  • [quark] Fix automated installation and check exit code of executed external commands (#2119)(PR #2216)

  • [res] Prevent duplication of ARSC entries (#2263)

  • [res] Don't rename resource entries when useRawResName = true (PR #2306)

  • [res] Update Android attrs to API 35 (PR #2318)

  • [smali-input] Compile one smali file at a time to avoid 64k limit (#2158)

  • [xml] Allow for non-standard attributes sizes and avoid index exceptions when decoding some strings (PR #2210)

  • [xml] AXML/Manifest parsing improvements (PR #2211)

New Contributors
Download files:

For system JRE the latest version is always preferred, download at oracle.com

View originalPermalink
How v1.5.1 went
v1.5.0

1.5.0

Added 9
  • Support for scripting using Kotlin
  • Support for external plugins
  • Hex-viewer for binary asset files in Jadx GUI
  • Go to main activity action in Jadx GUI
  • Support for XApk files
  • Allow to move class to another package
Changed 4
  • Improved code cache with ability to use common directory and view/delete existing caches in preferences
  • Jadx GUI configuration moved into plain json files in system config directory
  • Parse and use Kotlin metadata for renames
  • Java 11+ is now required

From jadx

Main features
  • Added support for:
    • Scripting, uses Kotlin, check short guide
    • External plugins, guide Both features in preview state, API is stable but limited (especially in UI customizations)
  • Jadx GUI:
    • Improved code cache, allow use common directory, view/delete exist caches in preferences
    • jadx-gui configuration moved into plain json files in system config directory
    • Allow to set custom shortcuts
    • Tabs drag and drop reorder support
    • Hex-viewer for binary asset files
    • Add 'go to main activity' action
  • Other:
    • Java 11+ is required now
    • Parse and use Kotlin metadata for renames
    • Add support for XApk files
    • Allow to move class to another package
    • Support jsr/ret opcodes (java-input)
  • A lot of bug fixes ... and regressions :rofl:

Full Changelog: https://github.com/skylot/jadx/compare/v1.4.7...v1.5.0

Download files:

For system JRE the latest version is always preferred, Java 11+ is required, download at oracle.com

View originalPermalink
How v1.5.0 went
v1.4.7

1.4.7

Added 2
  • Inline lambdas by instance field
  • Allow to load classes using input stream or byte array in jadx-input plugin
Fixed 18
  • Restore missing type parameter declarations
  • Filter invalid chars in app name for gradle export
  • Correct args shift for instance invoke-custom
  • Additional checks to forbid inline of null consts
  • Use strict patterns for synthetic methods inline
  • Resolve manifest decoding error Expected strings start

From jadx

Features
  • [core] Inline lambdas by instance field (#1800)
  • [plugins] Allow to load classes using input stream or byte array in jadx-input plugin (#1457)
Bug Fixes
  • [core] Restore missing type parameter declarations (#1800)
  • [core] Filter invalid chars in app name for gradle export (PR #1813)
  • [core] Correct args shift for instance invoke-custom (#1816)
  • [core] Additional checks to forbid inline of null consts (#1828)
  • [core] Use strict patterns for synthetic methods inline (#1829)
  • [res] Resolve manifest decoding error Expected strings start (#1797)(PR #1798)
  • [res] Handle RES_TABLE_TYPE_OVERLAY (#1748) (PR #1804)
  • [res] Parsing of sparse RES_TABLE_TYPE_TYPE and RES_TABLE_TYPE_STAGED_ALIAS chunks (#1806 #1803)(PR #1807)
  • [res] Resolve int hex attributes
  • [res] Resolve custom attributes
  • [res] Resolve declare-styleable atrributes
  • [res] Set empty parent for styles without a parent, remove duplicated code
  • [xml] Use parent attribute only for styles (PR #1815)
  • [gui] Search constant fields usage in all classes (#1801)
  • [gui] Redirect jump from search for inlined classes
  • [gui] Show skipped resources count during search (#1808)
  • [gui] Update Messages_zh_CN.properties (PR #1811)
  • [debugger] Process UI updates in correct thread (#1796)
  • [cli] Make enum CLI arguments match documented format (PR #1787)

Full Changelog: https://github.com/skylot/jadx/compare/v1.4.6...v1.4.7

Download files:

For system JRE the latest version is always preferred, download at oracle.com

View originalPermalink
How v1.4.7 went
v1.4.6

1.4.6

Added 5
  • Support polymorphic invoke
  • Add alternative file open dialog
  • Add native libs info to summary
  • Add Russian Translation
  • Add keyboard shortcut ctrl+w to close tab
Fixed 15
  • Check full signature for search method override
  • Escape special characters in AAB resources
  • Allow altMetafactory method in lambda call site
  • Resolve JavaNode caching issues
  • Output unknown invoke-custom as polymorphic call
  • Process manifest before other resources

From jadx

Features
  • [core] Support polymorphic invoke (#384)(#1777)
  • [gui] Add alternative file open dialog (#1709)
  • [gui] Add native libs info to summary (#1717)
  • [gui] Add Russian Translation (PR #1744)
  • [gui] Added keyboard shortcut ctrl+w to close tab (#1765)(PR #1766)
Bug Fixes
  • [core] Check full signature for search method override (#1743)
  • [core] Escape special characters in AAB resources (PR #1747)
  • [core] Allow altMetafactory method in lambda call site (#1760)
  • [core] Resolve JavaNode caching issues (#1775)
  • [core] Output unknown invoke-custom as polymorphic call (#1760)
  • [core] Process manifest before other resources (#1740)
  • [gui] Disable shell folders in file open dialog (#1709)
  • [gui] Correct html disabling in search results
  • [gui] Try to handle exception in RSTA.getPreferredSize() (#1712)
  • [gui] Show all code sources in summary (remove dex filter) (#1716)
  • [gui] Change callMethodName of constructors in Frida action (#1714)(PR #1715)
  • [gui] Add template for constructor and void methods to Frida snippet (#1714)
  • [gui] Hi-dpi main window initial size (#1728)(PR #1729)
  • [gui] Correct html render in comments search results
  • [gui] Resolve exception in smali method writer (#1739)(PR #1745)
  • [gui] Improve smali disasm method param write (#1739)
  • [gui] Make bytecode output closer to smali (#1739)
  • [gui] Quick fix for duplicate/overlapping logcat windows (#1752)(PR #1761)
  • [gui] Allow html in JVariable to render renaming of variables correctly (#1769)(PR #1770)
  • [gui] Print the renamed function name in a frida snippet log (#1772)(PR #1773)
  • [gui] Split tabs loading to prevent ui dead lock
New Contributors

Full Changelog: https://github.com/skylot/jadx/compare/v1.4.5...v1.4.6

Download files:

For system JRE the latest version is always preferred, download at oracle.com

View originalPermalink
How v1.4.6 went
v1.4.5

1.4.5

Added 2
  • Add option for search results count per page in GUI
  • Add logcat output to debugger
Changed 4
  • Update Korean translation in GUI
  • Update pt-BR translation in GUI
  • Update zh-TW translation in GUI
  • Update zh_CN translation in GUI
Fixed 12
  • Don't rename bridged overridden methods
  • Don't mark constructor for inline if anonymous class inline is disabled
  • Handle possible concurrent exception in method codegen
  • Correct fix for all use places of incompatible primitives
  • Improve logging messages for zip security errors
  • Improve ternary inline and resolve more enum cases

From jadx

Features
  • [gui] Option for search results count per page (#1652)
  • [debugger] Add logcat output (#1411)(PR #1666)
Bug Fixes
  • Don't rename bridged overridden methods (#1672)
  • Don't mark constructor for inline if anonymous class inline is disabled (#1680)
  • Handle possible concurrent exception in method codegen (#1685)
  • Correct fix for all use places of incompatible primitives (#1688)
  • Improve logging messages for zip security errors (#750)(PR #1698)
  • Improve ternary inline, resolve more enum cases (#1686)
  • Restore enum class with custom code in static init (#1699)
  • Handle empty block at end of else-if chain (#1674)
  • [res] Implemented parsing RES_TABLE_TYPE_LIBRARY chunks (#1663)(PR #1664)
  • [debugger] Migrate to fixed jdwp library fork (#1471)
  • [gui] Multi-threading issue in DebugController fixed (#1701) (PR #1702)
  • [gui] Disable HTML rendering in labels if not needed
  • [gui] Update Korean translation (PR #1650)
  • [gui] Update pt-BR translation (PR #1655)
  • [gui] Update zh-TW translation (PR #1694)
  • [gui] Update zh_CN translation (PR #1700)

Full Changelog: https://github.com/skylot/jadx/compare/v1.4.4...v1.4.5

Download files description:
  • jadx-gui-1.4.5-with-jre-win.zip - jadx-gui with bundled JRE
  • jadx-gui-1.4.5-no-jre-win.exe - jadx-gui single exe (system JRE must be installed)
  • jadx-1.4.5.zip - cross-platform cli and gui bundle (system JRE must be installed)

For system JRE the latest version is always preferred, download at oracle.com

View originalPermalink
How v1.4.5 went
View all

Discussion

If you publish jadx, you can claim this product by proving you administer its repository.