This directory contains utilities needed to support parallel dex compilation
of Android applications.

The DexMapper utility maps an applications classes (given in one or more input jar files),
to one or more output jars, that may then be compiled separately.

The DexReducer utility extracts .dex files from one or more archives, and package them in a
single output archive, renaming entries to: classes.dex, classes2.dex, ...

These utilities uses a low-level zip-file manipulation library contained in this package.
The library is optimized for serial parsing of zip archives and tasks such as copying entries
to one or more output archives.It employs direct byte buffers, to avoid copying file data to
the java heap, and allowing fast copies from input to output. Output is asynchronous, for optimal
performance when running on non-memory-based file systems.

WARNING: This library was designed for creating build tools needed to support parallel
dex compilation of Android applications, related functions. While the library provides
fairly general facilities for processing zip files, the API is still immature, and
subject to change.
