Benchmarks on bullhead-userdebug show that there is a negligent
performance impact when using sparse entries on a 30% loaded
sparse type of 1000 resources.
Benchmark Time CPU Iterations
-----------------------------------------------------------------------------------
BM_SparseEntryGetResourceSparseLarge 255 ns 254 ns 2751408
BM_SparseEntryGetResourceNotSparseLarge 254 ns 254 ns 2756534
Bug: 27381711
Test: make libandroidfw_tests aapt2_tests
Change-Id: I051ea22f2f6b2bc3696e446adc9e2a34be18009f
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
aapt2 link ...
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).
aapt2 link ...
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.