# jadx changelog > jadx release notes. - Vendor: jadx - Category: Developer Tools - Official site: https://github.com/skylot/jadx - Tracked by: What's New (https://whatsnew.fyi/product/jadx) - Harvested from: GitHub (skylot/jadx) - Entries below: 10 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. ## Releases ### v1.5.6 — 1.5.6 - Date: 2026-07-10 - Version: v1.5.6 - Original notes: https://github.com/skylot/jadx/releases/tag/v1.5.6 - Permalink: https://whatsnew.fyi/product/jadx/releases/v1.5.6 - **security** — Reject absolute or path to CWD for zip entries - **security** — Sanitize all string values for gradle scripts on export - **security** — Add missing escaping on summary page - **changed** — Use queue instead of recursion for type updates - **added** — Graph views, code pane sync, and more - **added** — Collapse single-child directory chains in resource tree - **added** — Handle pasted file lists in file chooser - **added** — Show simple message box for file exceptions - **added** — Allow to create input category node even if no matching files found - **added** — New module/library for work with call graphs - **added** — Add mimetype for desktop file - **added** — Open single loaded class after load - **added** — Add copy reference to context menu - **fixed** — Insert generic casts for variable assigned from fields with known types - **fixed** — Handle Kotlin 1.9+ $ENTRIES pattern in enum restoration - **fixed** — Remove useless PHI for duplicate moves - **fixed** — Support enum restore for constructor without args - **fixed** — Handle null bounds in WindowLocation to prevent NPE on dialog dispose - **fixed** — Stop type inference on exception to prevent endless loop ###### 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
Click to expand ###### 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) _[Truncated at 4000 characters — full notes: https://github.com/skylot/jadx/releases/tag/v1.5.6]_ ### v1.5.5 — 1.5.5 - Date: 2026-02-25 - Version: v1.5.5 - Original notes: https://github.com/skylot/jadx/releases/tag/v1.5.5 - Permalink: https://whatsnew.fyi/product/jadx/releases/v1.5.5 - **fixed** — Code area was updated from wrong thread causing many exception report popups, UI freezes and high CPU usage - **fixed** — Resolve possible NPE during project data loading - **fixed** — Stop token process on NULL token in JadxTokenMaker - **fixed** — Make the Split view checkbox correctly toggle between both modes - **changed** — Insert generic casts for variable assigned from fields with known types ###### 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: - [jadx-gui-1.5.5-with-jre-win.zip](https://github.com/skylot/jadx/releases/download/v1.5.5/jadx-gui-1.5.5-with-jre-win.zip) - jadx-gui with bundled JRE - [jadx-gui-1.5.5-win.zip](https://github.com/skylot/jadx/releases/download/v1.5.5/jadx-gui-1.5.5-win.zip) - jadx-gui Windows executable (system JRE must be installed) - [jadx-1.5.5.zip](https://github.com/skylot/jadx/releases/download/v1.5.5/jadx-1.5.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](https://www.oracle.com/java/technologies/downloads/#jdk25-windows) ### v1.5.4 — 1.5.4 - Date: 2026-02-13 - Version: v1.5.4 - Original notes: https://github.com/skylot/jadx/releases/tag/v1.5.4 - Permalink: https://whatsnew.fyi/product/jadx/releases/v1.5.4 - **added** — Implement config file load and save in CLI - **added** — Add option for UI zoom factor in GUI - **added** — Allow to change limit for type inference updates - **added** — Support '.apks' files - **added** — Allow to use '.zip' as plugin artifact with jars inside - **changed** — Change fonts size with UI zoom, use FlatLaf fonts bundle - **changed** — Use FontUtils.getCompositeFont() that supports CJK - **changed** — Select better class from duplicates - **changed** — Report plugin exceptions to plugin github project - **changed** — Scripting plugin now external and not included in release bundle - **fixed** — Avoid false positive throws - **fixed** — Resolve race condition in task executor - **fixed** — Add missing field code annotation for enum fields in switch-case - **fixed** — Resolve rename of inner class using full name - **fixed** — Catch all exceptions in type update - **fixed** — More file extensions added for file type detection - **fixed** — Improve decoding errors handling - **fixed** — Handle OutOfMemoryError to correctly halt processing - **fixed** — Detect more for-each loops and prevent issues with missing generics types ###### 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](https://github.com/jadx-decompiler/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
Click to expand ###### 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 #275 _[Truncated at 4000 characters — full notes: https://github.com/skylot/jadx/releases/tag/v1.5.4]_ ### v1.5.3 — 1.5.3 - Date: 2025-09-08 - Version: v1.5.3 - Original notes: https://github.com/skylot/jadx/releases/tag/v1.5.3 - Permalink: https://whatsnew.fyi/product/jadx/releases/v1.5.3 - **added** — Enhance AAB parsing - **added** — Add new search options to search in text or binary resources - **added** — Allow view and edit input smali files - **changed** — Use compileSdkVersion from manifest, update AGP to 8.10.1, and other improvements - **fixed** — Correct loading for plain text XML files - **fixed** — Correct hex format for negative numbers - **fixed** — Use 'dev.dirs' JNI implementation only on x86-64 - **fixed** — Use proper newlines when generating CFG - **fixed** — Improve memory usage in jadx-cli - **fixed** — Add missing '-XX:+IgnoreUnrecognizedVMOptions' JVM flag - **fixed** — Workaround for wrap layout repaint issue in search dialog - **fixed** — Remove duplicate class of Frida snippet - **fixed** — Use var instead let for class variable in Frida script - **fixed** — Prevent IndexOutOfBoundsException in MethodSearchProvider - **fixed** — Disable debugger action if project not loaded - **fixed** — Minor UI fixes - **fixed** — Resolve NPE on code area close - **fixed** — Fix NullPointerException in copyAllSearchResults - **fixed** — Various tabs related fixes - **fixed** — Allow to load zip with duplicate names in entries ###### 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 * @TheDauntless made their first contribution in https://github.com/skylot/jadx/pull/2527 * @akexorcist made their first contribution in https://github.com/skylot/jadx/pull/2528 * @MartLintz made their first contribution in https://github.com/skylot/jadx/pull/2538 * @TinyServal made their first contribution in https://github.com/skylot/jadx/pull/2549 * @LoyieKing made their first contribution in https://github.com/skylot/jadx/pull/2557 * @beaverxsheet made their first contribution in https://github.com/skylot/jadx/pull/2592 ###### Download files: - [jadx-gui-1.5.3-with-jre-win.zip](https://github.com/skylot/jadx/releases/download/v1.5.3/jadx-gui-1.5.3-with-jre-win.zip) - jadx-gui with bundled JRE - [jadx-gui-1.5.3-win.zip](https://github.com/skylot/jadx/releases/download/v1.5.3/jadx-gui-1.5.3-win.zip) - jadx-gui Windows executable (system JRE must be installed) - [jadx-1.5.3.zip](https://github.com/skylot/jadx/releases/download/v1.5.3/jadx-1.5.3.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](https://www.oracle.com/java/technologies/downloads/#jdk21-windows) ### v1.5.2 — 1.5.2 - Date: 2025-06-02 - Version: v1.5.2 - Original notes: https://github.com/skylot/jadx/releases/tag/v1.5.2 - Permalink: https://whatsnew.fyi/product/jadx/releases/v1.5.2 - **added** — Custom zip reader implementation to fight tampering - **added** — Gradle export templates supporting android app, android lib, and simple java - **added** — Initial support for DEX v41 - **added** — Export dialog with options in GUI - **added** — Tree structure usage search in GUI - **added** — Dynamic code editor theme from UI theme in GUI - **added** — Preview Tab Feature in GUI - **added** — New HexViewer in GUI - **added** — APKM support in Plugins - **added** — Parse and use Kotlin SourceDebugExtension with SMAP for rename classes and packages - **added** — Unload method to JadxPlugin API - **added** — Method to add popup menu entry for tree nodes in API - **added** — Method to get jadx-gui icons by name in API - **added** — Method to open usage dialog in API - **added** — Replace constants in annotations of method arguments - **added** — Generate missing throws declarations and validate exceptions - **added** — WebP image preview support in GUI - **added** — Script rename feature in GUI - **added** — Confirm dialog when removing script in GUI - **added** — Support for APK Signature Scheme v3.1 signers in GUI ###### 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
Click to expand ###### 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 _[Truncated at 4000 characters — full notes: https://github.com/skylot/jadx/releases/tag/v1.5.2]_ ### v1.5.1 — 1.5.1 - Date: 2024-11-11 - Version: v1.5.1 - Original notes: https://github.com/skylot/jadx/releases/tag/v1.5.1 - Permalink: https://whatsnew.fyi/product/jadx/releases/v1.5.1 - **added** — Support restore of switch over string - **added** — Add automatic patching for semi-corrupted APKs - **added** — Support new fields in resource decoding - **added** — Pin tabs in GUI - **added** — Quick Tabs in GUI - **added** — Limit search to a package in GUI - **added** — Add button to go to Application class in GUI - **added** — Export resource/class/package in GUI - **added** — Smali code folding in GUI - **added** — Move AAB support to separate plugin - **added** — Allow to change config and cache dirs with env vars - **added** — Support inner class construction with outer instance - **added** — Add option to always use source file name as class name alias - **added** — Allow to disable installed plugins - **added** — Give ability to plugins to edit blocks before locking - **added** — Add JadxArgs property to adjust xml security checks - **added** — Allow to get method code via API - **added** — Add option to disable plugins in CLI - **added** — Allow to check for unstable releases in GUI - **added** — Add button to go to Android Manifest in GUI ###### 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
Click to expand ###### 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 swit _[Truncated at 4000 characters — full notes: https://github.com/skylot/jadx/releases/tag/v1.5.1]_ ### v1.5.0 — 1.5.0 - Date: 2024-04-20 - Version: v1.5.0 - Original notes: https://github.com/skylot/jadx/releases/tag/v1.5.0 - Permalink: https://whatsnew.fyi/product/jadx/releases/v1.5.0 - **added** — Support for scripting using Kotlin - **added** — Support for external plugins - **added** — Hex-viewer for binary asset files in Jadx GUI - **added** — Go to main activity action in Jadx GUI - **added** — Support for XApk files - **added** — Allow to move class to another package - **added** — Support jsr/ret opcodes for java-input - **added** — Custom shortcuts configuration in Jadx GUI - **added** — Tabs drag and drop reorder support in Jadx GUI - **changed** — Improved code cache with ability to use common directory and view/delete existing caches in preferences - **changed** — Jadx GUI configuration moved into plain json files in system config directory - **changed** — Parse and use Kotlin metadata for renames - **changed** — Java 11+ is now required ###### Main features - Added support for: - Scripting, uses Kotlin, check [short guide](https://github.com/skylot/jadx/wiki/Jadx-scripts-guide) - External plugins, [guide](https://github.com/skylot/jadx/wiki/Jadx-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: - [jadx-gui-1.5.0-with-jre-win.zip](https://github.com/skylot/jadx/releases/download/v1.5.0/jadx-gui-1.5.0-with-jre-win.zip) - jadx-gui with bundled JRE - [jadx-gui-1.5.0-no-jre-win.exe](https://github.com/skylot/jadx/releases/download/v1.5.0/jadx-gui-1.5.0-no-jre-win.exe) - jadx-gui single exe (system JRE must be installed) - [jadx-1.5.0.zip](https://github.com/skylot/jadx/releases/download/v1.5.0/jadx-1.5.0.zip) - cross-platform cli and gui bundle (system JRE must be installed) For system JRE the latest version is always preferred, Java 11+ is required, download at [oracle.com](https://www.oracle.com/java/technologies/downloads/#jdk21-windows) ### v1.4.7 — 1.4.7 - Date: 2023-04-20 - Version: v1.4.7 - Original notes: https://github.com/skylot/jadx/releases/tag/v1.4.7 - Permalink: https://whatsnew.fyi/product/jadx/releases/v1.4.7 - **added** — Inline lambdas by instance field - **added** — Allow to load classes using input stream or byte array in jadx-input plugin - **fixed** — Restore missing type parameter declarations - **fixed** — Filter invalid chars in app name for gradle export - **fixed** — Correct args shift for instance invoke-custom - **fixed** — Additional checks to forbid inline of null consts - **fixed** — Use strict patterns for synthetic methods inline - **fixed** — Resolve manifest decoding error Expected strings start - **fixed** — Handle RES_TABLE_TYPE_OVERLAY - **fixed** — Parsing of sparse RES_TABLE_TYPE_TYPE and RES_TABLE_TYPE_STAGED_ALIAS chunks - **fixed** — Resolve int hex attributes - **fixed** — Resolve custom attributes - **fixed** — Resolve declare-styleable attributes - **fixed** — Set empty parent for styles without a parent, remove duplicated code - **fixed** — Use parent attribute only for styles - **fixed** — Search constant fields usage in all classes - **fixed** — Redirect jump from search for inlined classes - **fixed** — Show skipped resources count during search - **fixed** — Process UI updates in correct thread - **fixed** — Make enum CLI arguments match documented format ###### 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: - [jadx-gui-1.4.7-with-jre-win.zip](https://github.com/skylot/jadx/releases/download/v1.4.7/jadx-gui-1.4.7-with-jre-win.zip) - jadx-gui with bundled JRE - [jadx-gui-1.4.7-no-jre-win.exe](https://github.com/skylot/jadx/releases/download/v1.4.7/jadx-gui-1.4.7-no-jre-win.exe) - jadx-gui single exe (system JRE must be installed) - [jadx-1.4.7.zip](https://github.com/skylot/jadx/releases/download/v1.4.7/jadx-1.4.7.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](https://www.oracle.com/java/technologies/downloads/#jdk20-windows) ### v1.4.6 — 1.4.6 - Date: 2023-02-20 - Version: v1.4.6 - Original notes: https://github.com/skylot/jadx/releases/tag/v1.4.6 - Permalink: https://whatsnew.fyi/product/jadx/releases/v1.4.6 - **added** — Support polymorphic invoke - **added** — Add alternative file open dialog - **added** — Add native libs info to summary - **added** — Add Russian Translation - **added** — Add keyboard shortcut ctrl+w to close tab - **fixed** — Check full signature for search method override - **fixed** — Escape special characters in AAB resources - **fixed** — Allow altMetafactory method in lambda call site - **fixed** — Resolve JavaNode caching issues - **fixed** — Output unknown invoke-custom as polymorphic call - **fixed** — Process manifest before other resources - **fixed** — Disable shell folders in file open dialog - **fixed** — Correct html disabling in search results - **fixed** — Try to handle exception in RSTA.getPreferredSize() - **fixed** — Show all code sources in summary (remove dex filter) - **fixed** — Change callMethodName of constructors in Frida action - **fixed** — Add template for constructor and void methods to Frida snippet - **fixed** — Hi-dpi main window initial size - **fixed** — Correct html render in comments search results - **fixed** — Resolve exception in smali method writer ###### 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 * @daMatz made their first contribution in https://github.com/skylot/jadx/pull/1715 * @SnowVolf made their first contribution in https://github.com/skylot/jadx/pull/1744 * @zach-snell made their first contribution in https://github.com/skylot/jadx/pull/1761 * @Ran-Naor made their first contribution in https://github.com/skylot/jadx/pull/1766 **Full Changelog**: https://github.com/skylot/jadx/compare/v1.4.5...v1.4.6 ###### Download files: - [jadx-gui-1.4.6-with-jre-win.zip](https://github.com/skylot/jadx/releases/download/v1.4.6/jadx-gui-1.4.6-with-jre-win.zip) - jadx-gui with bundled JRE - [jadx-gui-1.4.6-no-jre-win.exe](https://github.com/skylot/jadx/releases/download/v1.4.6/jadx-gui-1.4.6-no-jre-win.exe) - jadx-gui single exe (system JRE must be installed) - [jadx-1.4.6.zip](https://github.com/skylot/jadx/releases/download/v1.4.6/jadx-1.4.6.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](https://www.oracle.com/java/technologies/downloads/#jdk19-windows) ### v1.4.5 — 1.4.5 - Date: 2022-10-20 - Version: v1.4.5 - Original notes: https://github.com/skylot/jadx/releases/tag/v1.4.5 - Permalink: https://whatsnew.fyi/product/jadx/releases/v1.4.5 - **added** — Add option for search results count per page in GUI - **added** — Add logcat output to debugger - **fixed** — Don't rename bridged overridden methods - **fixed** — Don't mark constructor for inline if anonymous class inline is disabled - **fixed** — Handle possible concurrent exception in method codegen - **fixed** — Correct fix for all use places of incompatible primitives - **fixed** — Improve logging messages for zip security errors - **fixed** — Improve ternary inline and resolve more enum cases - **fixed** — Restore enum class with custom code in static init - **fixed** — Handle empty block at end of else-if chain - **fixed** — Implement parsing RES_TABLE_TYPE_LIBRARY chunks in resource parser - **fixed** — Migrate debugger to fixed jdwp library fork - **fixed** — Fix multi-threading issue in GUI DebugController - **fixed** — Disable HTML rendering in labels if not needed in GUI - **changed** — Update Korean translation in GUI - **changed** — Update pt-BR translation in GUI - **changed** — Update zh-TW translation in GUI - **changed** — Update zh_CN translation in GUI ###### 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](https://www.oracle.com/java/technologies/downloads/#jdk18-windows)