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
.zipas 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
.zipas 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
OutOfMemoryErrorto 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_x1stack 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: v1.5.3...v1.5.4
New Contributors
- @huqiuser made their first contribution in #2646
- @duzhaokun123 made their first contribution in #2647
- @wech71 made their first contribution in #2654
- @histausse made their first contribution in #2702
- @RedArms made their first contribution in #2718
- @google-mirror made their first contribution in #2734