Repository navigation
DECX v4.3.0
Important
This is the last major release on the JADX-based line.
DECX is built on top of JADX, and that foundation has become the bottleneck:
- JADX's decompilation pipeline holds large in-memory caches — v4.2.0 already had to bolt a bounded LRU on top of it.
- Its memory footprint makes long analysis sessions expensive.
- Its JVM-first design is a poor fit for AI-agent workflows that need fast, incremental, scriptable access to code.
Rather than continue patching around it, no further major version updates will be shipped on this line — only critical fixes and small maintenance releases.
The next major version of DECX is already in development, rebuilt on a new analysis stack designed for AI agents from the ground up.
v4.3.0 focuses on the CLI: automatic framework vendor detection, APEX payloads (ext4 and EROFS) now parsed natively in pure TypeScript, and an installer that no longer ships any native binaries.
Features
Framework vendor auto-detection
decx framework process/open/run now resolve the artifact vendor (device model) the same way OEM is resolved:
- A persisted
.artifact.jsonwins; otherwise a single connected adb device is auto-selected and itsro.product.modelis read. - Several devices without
--serialfail fast withADB_DEVICE_AMBIGUOUS. - No device at all keeps the offline
unknowndefault, so processing stays usable without a phone attached. - The detected vendor is persisted to the artifact, so later pack/open commands reuse it without re-querying.
Verified jar version on install/update
- The skip-if-current check no longer trusts the config record — it parses
version.propertiesstraight from the installed jar's zip central directory (no new dependency). - A missing, stale or manually replaced record no longer triggers a needless re-download of the ~50MB server jar.
self updatenow reports the jar's actual version.
Changes
Native EROFS payload reader
- EROFS
apex_payload.imgimages are now parsed natively in pure TypeScript (decx-cli/src/android/erofs-reader.ts) — same approach as the ext4 reader: no external tool, no WSL, works on every platform. - Covers the layouts real devices produce: compact indexes, LZ4 and DEFLATE clusters (including compressed fragment tails and
ztailpackinginline tails), PLAIN incompressible files, symlinks, and multi-lcluster extents. - Byte-exact against
fsck.erofs --extracton a matrix of fixtures (LZ4, DEFLATE, ztailpacking, fragments, PLAIN, empty files, symlinks). - LZMA/ZSTD and other exotic features fall back to a system-installed
extract.erofs(PATH or WSL on Windows).
Dropped all packaged native binaries
- APEX payload extraction now runs entirely through the native pure-TypeScript ext4 and EROFS readers (superblock → extents → dirents; compact indexes, fragments, ztailpacking).
- Validated on a live Android 16 device: all 33 collected system APEX payloads extracted with zero external tool invocations.
- The remaining
extract.erofsbinaries (~3.9MB across four platforms) and thedebugfsfallback are gone; exotic features resolve tools from PATH/WSL with a clear install-hint error otherwise. - No more
bin.tar.gzpackaging, extraction toDECX_HOME/bin, or.native-tools.sha256marker bookkeeping — installer shrinks by ~1.7MB (tarball).
Faster framework collection
/apex-first tiered collection skips already-covered modules.- Image tools are resolved lazily, so adb-only flows no longer require them.
Dependency bumps
Applied from pending Dependabot PRs: logback 1.6.3, ktor 3.5.2, actions/setup-java v6.
Build
- Replaced deprecated Kotlin DSL
by registeringdelegates. - Updated the
com.github.ben-manes.versionsplugin id to its newio.github.ben-manes.versionshome.