Adam Lesinski 06460ef0d7 AAPT2: Fix up file IO
This also enables an AAPT behavior that CTS tests have
come to depend on.

Small files that compress negatively (get larger) are stored
uncompressed. Some CTS tests assume this and try to open these
files by mmapping them, which is only possible if they are
uncompressed.

Bug: 35461578
Test: make aapt2_tests
Change-Id: Id622a6150fe72477ad65d67d1bad897a8ee2ffb9
2017-03-20 16:53:46 -07:00

4.3 KiB

Android Asset Packaging Tool 2.0 (AAPT2) release notes

Version 2.11

  • Adds the ability to specify assets directories with the -A parameter. Assets work just like assets in the original AAPT. It is not recommended to package assets with aapt2, however, since the resulting APK is post-processed by other tools anyways. Assets do not get processed by AAPT2, just copied, so incremental building gets slower if they are included early on.

Version 2.10

  • Add ability to specify package ID to compile with for regular apps (not shared or static libs). This package ID is limited to the range 0x7f-0xff inclusive. Specified with the --package-id flag.
  • Fixed issue with resources being stripped for locales and other configuration.
  • Fixed issue with escaping strings in XML resources.

Version 2.9

  • Added sparse resource type encoding, which encodes resource entries that are sparse with a binary search tree representation. Only available when minSdkVersion >= API O or resource qualifier of resource types is >= v26 (or whatever API level O becomes). Enabled with --enable-sparse-encoding flag.

aapt2 optimize ...

  • Adds an optimization pass that supports:
    • stripping out any density assets that do not match the --target-densities list of densities.
    • resource deduping when the resources are dominated and identical (already happens during link phase but this covers apps built with aapt).
    • new sparse resource type encoding with the --enable-sparse-encoding flag if possible (minSdkVersion >= O or resource qualifier >= v26).

Version 2.8

  • Adds shared library support. Build a shared library with the --shared-lib flag. Build a client of a shared library by simply including it via -I.

Version 2.7

aapt2 compile ...

  • Fixes bug where psuedolocalization auto-translated strings marked 'translateable="false"'.

Version 2.6

aapt2

  • Support legacy configVarying resource type.
  • Support <bag> tag and treat as <style> regardless of type.
  • Add <feature-group> manifest tag verification.
  • Add <meta-data> tag support to <instrumentation>.

Version 2.5

  • Transition XML versioning: Adds a new flag --no-version-transitions to disable automatic versioning of Transition XML resources.

Version 2.4

  • Supports <meta-data> tags in <manifest>.

Version 2.3

aapt2

  • Support new font resource type.

Version 2.2

aapt2 compile ...

  • Duplicate resource filtering: removes duplicate resources in dominated configurations that are always identical when selected at runtime. This can be disabled with --no-resource-deduping.

Version 2.1

  • Configuration Split APK support: supports splitting resources that match a set of configurations to a separate APK which can be loaded alongside the base APK on API 21+ devices. This is done using the flag --split path/to/split.apk:<config1>[,<config2>,...].
  • SDK version resource filtering: Resources with an SDK version qualifier that is unreachable at runtime due to the minimum SDK level declared by the AndroidManifest.xml are stripped.

Version 2.0

aapt2 compile ...

  • Pseudo-localization: generates pseudolocalized versions of default strings when the --pseudo-localize option is specified.
  • Legacy mode: treats some class of errors as warnings in order to be more compatible with AAPT when --legacy is specified.
  • Compile directory: treats the input file as a directory when --dir is specified. This will emit a zip of compiled files, one for each file in the directory. The directory must follow the Android resource directory structure (res/values-[qualifiers]/file.ext).
  • Automatic attribute versioning: adds version qualifiers to resources that use attributes introduced in a later SDK level. This can be disabled with --no-auto-version.
  • Min SDK resource filtering: removes resources that can't possibly be selected at runtime due to the application's minimum supported SDK level.