2020-01-19 14:06:53 -03:00
2019-11-26 23:47:46 -03:00
2020-01-19 14:06:53 -03:00
2019-12-24 00:54:09 -03:00
2018-06-12 20:59:41 -03:00
2019-11-17 00:04:40 -03:00
2019-11-26 23:47:46 -03:00
2019-11-16 23:35:36 -03:00
2019-11-16 23:35:36 -03:00
2019-11-17 18:19:01 -03:00
2017-09-22 22:15:15 -03:00
2019-11-19 08:26:43 -03:00

multidexlib2

Multi-dex extensions for dexlib2.

Maven Central Build Status

This is a free software (GPLv3+) library on top of dexlib2 that features:

  • Multi-dex reading and writing.
  • Optional management of the content of the main dex file when writing multi-dex.
  • Simplified read/write access to multi-dex containers as plain-old dexlib2 DexFile objects, making it trivial to add multi-dex support to existing non-multi-dex-aware dexlib2 clients.
  • Faster dex reads than plain dexlib2.
  • Optional multi-threaded multi-dex writes that deliver greatly increased write performance.
  • Automatic management of dex version, dex opcodes, and API level.
  • Configurable naming of multi-dex member files.
  • Progress logging to a client-provided logger.

Limitations:

  • Only supports dex files. (Does not support odex/oat files.)
  • Only writes dex files to directories. (Does not write into zip files.)

DISTRIBUTION

Releases of multidexlib2 are distributed with coordinates com.github.lanchon.dexpatcher:multidexlib2 through the Maven Central Repository, with version numbers starting at 2.2.0 and matching the version of dexlib2 they were built against. Release changelog is available here.

USAGE

Interface:

  • MultiDexIO: read and write potentially multi-dex containers.
    • readDexFile(): read potentially multi-dex container and return a single, merged DexFile.
    • readMultiDexContainer(): read potentially multi-dex container and return a MultiDexContainer.
    • writeDexFile(): write potentially multi-dex container from a single DexFile.
  • RawDexIO: read and write single dex files (supersedes invoking dexlib2 directly).

Parameters:

  • boolean multiDex: true to enable multi-dex support.
  • File file: file or directory to read or write.
  • DexFileNamer namer: set to new BasicDexFileNamer().
  • Opcodes opcodes: null to auto-detect.
  • int maxDexPoolSize: set to DexIO.DEFAULT_MAX_DEX_POOL_SIZE.
  • int threadCount: thread count for multi-threaded multi-dex writes.
    • 1 to force single-threaded writes.
    • 0 to auto-detect optimum thread count.
  • int minMainDexClassCount, boolean minimalMainDex: main dex file content management.
    • 0, false to disable main dex management.
  • DexIO.Logger logger: null to disable logging.

Sample:

DexPatcher's file processor is a simple yet production-quality client of multidexlib2.

Description
Multi-dex extensions for dexlib2
Readme 303 KiB
Languages
Java 100%