• Home
  • History
  • Annotate
  • only in /frameworks/base/tools/aapt2/compile/
History log of /frameworks/base/tools/aapt2/compile/
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
cc73e990e5381adfa605ccacad431231d9269893 13-May-2017 Adam Lesinski <adamlesinski@google.com> AAPT2: Ignore trailing data after IEND chunk in PNG

libpng seems to do the same, so our chunk filter should not care what
comes after.

Bug: 38169876
Test: manual
Change-Id: I020ddfe29ac3eb4d5ef9ace5611c6f6497de443d
ng.h
ngChunkFilter.cpp
ngCrunch.cpp
d0f492db038c6210c1138865d816bfb134376538 04-Apr-2017 Adam Lesinski <adamlesinski@google.com> AAPT2: Share split functionality between link and optimize

Generating splits should be possible to do from the optimize command.
This means that a lot of infrastructure around split APKs can be
shared by both the optimize and link phase.

Bug: 35925830
Change-Id: Ia88b9e4bff300a56353b2f7a4a2547c8eb43a299
Test: manual
ompile.cpp
8049f3da712ea9c3154b57ce2276c97e749d1f2c 01-Apr-2017 Adam Lesinski <adamlesinski@google.com> AAPT2: Fix pseudolocalization (again)

Pseudolocalization didn't properly handle spans in
strings like "<small><small>Hello</small></small>".

The spans would be identical and when doing range checks
only one of them would be updated.

Switched to a more robust way of extracting the relevant
chunks of a styled string. This uses a stack, which is more
in line with the real representation in XML.

Bug: 34088357
Test: make aapt2_tests
Change-Id: Ia4e4501713e688c96a89e26e4e2b1384f4cd3889
seudolocaleGenerator.cpp
seudolocaleGenerator_test.cpp
06460ef0d7072114ea3280e1650f77f55e7223f4 15-Mar-2017 Adam Lesinski <adamlesinski@google.com> 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
ompile.cpp
ng.cpp
ng.h
ngChunkFilter.cpp
ngCrunch.cpp
ceb9b2f80f853059233cdd29057f39a5960a74ae 16-Feb-2017 Adam Lesinski <adamlesinski@google.com> AAPT2: Shared library support

Test: make aapt2_tests
Change-Id: I98dddf1367e6c0ac425bb20be46e6ff05f4f2f45
dAssigner.h
7542162cb1b1fd2ce8a26dd7f3fedc8de8160d38 07-Jan-2017 Adam Lesinski <adamlesinski@google.com> AAPT2: Fix pseudolocalization to respect <xliff:g>

The XLIFF 'g' tag specifies content that should NOT be translated.
AAPT2's pseudolocalization process should respect it.

Bug:34064599
Test: make libandroidfw_tests
Change-Id: Ice437d7f0ff246730ee04896fd035e2d846148fb
seudolocaleGenerator.cpp
seudolocaleGenerator_test.cpp
d5083f6f6b9bc76bbe64052bcec639eee752a321 17-Jan-2017 Adam Lesinski <adamlesinski@google.com> Move StringPiece to libandroidfw

libandroidfw needs to make use of StringPiece, so
move it to libandroidfw and update all code referencing
StringPiece in aapt2.

Test: make libandroidfw_tests libaapt2_tests
Change-Id: I68d7f0fc7c651b048d9d1f5e7971f10ef5349fa1
ompile.cpp
dAssigner.h
inePatch.cpp
ng.cpp
ng.h
ngChunkFilter.cpp
seudolocaleGenerator.cpp
seudolocalizer.cpp
seudolocalizer.h
seudolocalizer_test.cpp
383db5ebcc3a4a615faf249bf4f126f42e80b82e 22-Jun-2016 Tamas Berghammer <tberghammer@google.com> Update package names to work with the proto3 compiler

Bug: b/28974522
Change-Id: I5f3adf4946ee4ba1e09e4f40afe83c151405972a
ompile.cpp
ng.cpp
ng.h
ce5e56e243d262a9b65459c3bd0bb9eaadd40628 22-Oct-2016 Adam Lesinski <adamlesinski@google.com> AAPT2: Rename to match new style

Use Google3 naming style to match new
projects' and open source google projects' style.

Preferred to do this in a massive CL so as to avoid
style inconsistencies that plague legacy code bases.
This is a relatively NEW code base, may as well keep
it up to date.

Test: name/style refactor - existing tests pass
Change-Id: Ie80ecb78d46ec53efdfca2336bb57d96cbb7fb87
ompile.cpp
dAssigner.cpp
dAssigner.h
dAssigner_test.cpp
mage.h
nlineXmlFormatParser.cpp
nlineXmlFormatParser.h
nlineXmlFormatParser_test.cpp
inePatch.cpp
inePatch_test.cpp
ng.cpp
ng.h
ngChunkFilter.cpp
ngCrunch.cpp
seudolocaleGenerator.cpp
seudolocaleGenerator.h
seudolocaleGenerator_test.cpp
seudolocalizer.cpp
seudolocalizer.h
seudolocalizer_test.cpp
mlIdCollector.cpp
mlIdCollector.h
mlIdCollector_test.cpp
dfaecafbe9fb7c5800191edfe3aa5d5938705204 21-Oct-2016 Adam Lesinski <adamlesinski@google.com> AAPT2: Fail compile on bad output file/dir

Test: manual
Change-Id: I2578e32c52430a62df942822ddf6bd3f06357bce
ompile.cpp
cacb28f2d60858106e2819cc7d95a65e8bda890b 19-Oct-2016 Adam Lesinski <adamlesinski@google.com> Use Google3 style guide with .clang-format

Test: style change only, builds ok
Change-Id: I885180e24cb2e7b58cfb4967c3bcb40058ce4078
ompile.cpp
dAssigner.cpp
dAssigner.h
dAssigner_test.cpp
mage.h
nlineXmlFormatParser.cpp
nlineXmlFormatParser.h
nlineXmlFormatParser_test.cpp
inePatch.cpp
inePatch_test.cpp
ng.cpp
ng.h
ngChunkFilter.cpp
ngCrunch.cpp
seudolocaleGenerator.cpp
seudolocaleGenerator.h
seudolocaleGenerator_test.cpp
seudolocalizer.cpp
seudolocalizer.h
seudolocalizer_test.cpp
mlIdCollector.cpp
mlIdCollector.h
mlIdCollector_test.cpp
edba94106473b8d7b3aa8a4805d2e45497084755 05-Oct-2016 Adam Lesinski <adamlesinski@google.com> AAPT2: Ensure PNG endianness in 9-patch serialization

9-patch serialization requires PNG endianness

Bug:31942900
Test: manual + added serialization test to libaapt2_tests
Change-Id: Iea521718f88e80d3fa7a8723a47584973738748a
inePatch.cpp
inePatch_test.cpp
21efb6827cede06c2ab708de6cdb64d052dddcce 15-Sep-2016 Adam Lesinski <adamlesinski@google.com> AAPT2: Refactor PngCrunching

PngCrunching now has a slightly better heuristic of choosing to encode
an image as a palette or RGB. For small images, RGB compresses much better
than a palette.

The original PNG is used as-is (minus some optional chunks being stripped)
if the resulting crunched PNG is larger than the original.

9-patch handling is abstracted away from PNGs, paving the way
for other 9-patches, like WebP.

TODO: handle PNGs with 9-patch chunks already present, which
should just be passed through. This will allow for 3rd party
tools to generate 9-patches.

TODO: implement cheap transparency: when one color is used to represent
transparent, and all other colors are opaque.

Bug:30053276
Change-Id: I5167f53b91d1efa462d9f03d6b9108d9b541c0c1
ompile.cpp
mage.h
inePatch.cpp
inePatch_test.cpp
ng.h
ngChunkFilter.cpp
ngCrunch.cpp
5eeaaddffd23d8d85aeb321e3ceea626e42cf9de 25-Aug-2016 Adam Lesinski <adamlesinski@google.com> AAPT2: Add Inline Complex XML support

See: https://developer.android.com/guide/topics/resources/complex-xml-resources.html

Change-Id: I8274c85e25cabf90423141c228697e873167d136
ompile.cpp
nlineXmlFormatParser.cpp
nlineXmlFormatParser.h
nlineXmlFormatParser_test.cpp
e42bc0587f82b42c466c1fc6baefc7113021fc4f 15-Aug-2016 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Fix clang-tidy warnings in aapt and aapt2."
1d740812e657e92e5370b4162991a7e43ec43221 15-Aug-2016 TreeHugger Robot <treehugger-gerrit@google.com> Merge "AAPT2: Expose split support to command line"
470f8fcb5c0c59b28b5f73ee011a797b05085da7 15-Aug-2016 Chih-Hung Hsieh <chh@google.com> Fix clang-tidy warnings in aapt and aapt2.

* Add explicit keyword to conversion constructors.
* Add NOLINT(implicit) comments for implicit conversion constructors.
Bug: 28341362
* Use const reference type for read-only parameters.
Bug: 30407689
* Add NOLINT to suppress wrong clang-tidy warnings on macros.
Test: build with WITH_TIDY=1

Change-Id: Ibfafb23d9be463b4072745a51a6d9f1812dcac45
ng.h
seudolocalizer.h
36c73a595910e96f3552f938eeb81d46356067a1 11-Aug-2016 Adam Lesinski <adamlesinski@google.com> AAPT2: Expose split support to command line

Bug:30445078
Change-Id: If4b8530dba71b9059b8e62c04757da99c1119d22
mlIdCollector.cpp
9b8528fee4eed35b8e887ded0851d08eb2b10db6 10-Aug-2016 Chih-Hung Hsieh <chh@google.com> Fix clang-tidy warnings in aapt and aapt2.

* Add explicit keyword to conversion constructors.
* Add NOLINT(implicit) comments for implicit conversion constructors.
Bug: 28341362
* Use const reference type for read-only parameters.
Bug: 30407689
* Use const reference type to avoid unnecessary copy.
Bug: 30413862
Test: build with WITH_TIDY=1

Change-Id: Id6d21961f313a1ad92b15a37fdaa5be9e8ab48e1
dAssigner.cpp
58a20a6482a56a262fd83a617482641e3a981db1 26-Jul-2016 Adam Lesinski <adamlesinski@google.com> AAPT2: Change accepted notation for resource names in tests

Previously the way to name resources in tests was to use reference
notation (@[package:][type/]name). Now we use name notation (no @).

Change-Id: I68f0a36562d89cc78c582d128f370d9556c58707
dAssigner_test.cpp
seudolocaleGenerator_test.cpp
mlIdCollector_test.cpp
bf0bd0f9ac1ffa0231cff0f6591dede48b3c6d52 02-Jun-2016 Adam Lesinski <adamlesinski@google.com> AAPT2: Add support to specify stable IDs

The --stable-ids flag allows the user to specify a file containing
a list of resource name and resource ID pairs in the form of:

package:type/name = 0xPPTTEEEE

This assigns the given resource the specified ID. It helps ensure
that when adding or removing resources, IDs are assigned in a stable
fashion.

If a package, type, or name is not found, no error or warning is
raised.

Change-Id: Ibc2f4e05cc924be255fedd862d835cb5b18d7584
dAssigner.cpp
dAssigner.h
dAssigner_test.cpp
d0f116b619feede0cfdb647157ce5ab4d50a1c46 09-Jul-2016 Adam Lesinski <adamlesinski@google.com> AAPT2: Remove usage of u16string

For legacy reasons, we kept around the use of UTF-16 internally
in AAPT2. We don't need this and this CL removes all instances of
std::u16string and StringPiece16. The only places still needed
are when interacting with the ResTable APIs that only operate in
UTF16.

Change-Id: I492475b84bb9014fa13bf992cff447ee7a5fe588
ompile.cpp
dAssigner.cpp
dAssigner_test.cpp
ng.cpp
seudolocaleGenerator.cpp
seudolocaleGenerator_test.cpp
seudolocalizer.cpp
seudolocalizer.h
seudolocalizer_test.cpp
mlIdCollector_test.cpp
fb6312fe93a8544e6a95d1c619c8cea3940cbe1a 28-Jun-2016 Adam Lesinski <adamlesinski@google.com> AAPT2: Add version collapsing

When an app specifies (or imports) resources with various
configurations for different SDK versions, specifying
a minSdk will make many of those resources unreachable.

Version collapsing will prune out the resources specified
for SDK versions less than the minSdk.

If, however, there is no exact matching resource for the
minSdk version, the next smallest SDK version is kept.

Change-Id: Ic7bcab6c59d65c97c67c8767358abb57cdec60a4
ompile.cpp
b2106687e1fa781d6470ae6374122cf34468846f 23-Jun-2016 Adam Lesinski <adamlesinski@google.com> Fix pseudolocalizer at end of string

The accent pseudolocalizer would incorrectly process
the byte after the end of the string, which would end
up inserting null characters into the resulting
output.

Change-Id: I5cdabd6b0272d94073f06e180b8cbe7abafa3888
seudolocalizer.cpp
seudolocalizer_test.cpp
33e74b7ece4972b6e37ab92e061b99acabf87bc3 11-May-2016 Adam Lesinski <adamlesinski@google.com> Merge "AAPT2: Add diff command" into nyc-mr1-dev am: 1a1461058e
am: 894f96a117

* commit '894f96a117a9ba942b9486317f6852c7472443a6':
AAPT2: Add diff command

Change-Id: Ic53915ac3c04d151f55c159a170d46da7a1f6c17
d53e3bed1ca4a14b2a86d53eaef6969bd043176e 03-May-2016 Chih-Hung Hsieh <chh@google.com> Fix google-explicit-constructor warnings.

Bug: 28341362
Change-Id: I080090d50f1a368a4e7c1a0732297bb6a295e34f
mlIdCollector.cpp
458b877488c12ea4336d8fc00a95d9c0298bd6d0 25-Apr-2016 Adam Lesinski <adamlesinski@google.com> AAPT2: Add diff command

Adds the diff command and various small fixes to issues
discovered when diffing old AAPT built APKs with new AAPT2
built APKS.

Bug:22775504
Change-Id: I682a7fe1cf4b3efa7cbd5d18b333cf2d1046fe1b
seudolocaleGenerator.cpp
803c7c807969bea1f1c50f348832f5b60ad05d8e 07-Apr-2016 Adam Lesinski <adamlesinski@google.com> AAPT2: Enable windows build and make sure it builds

Mingw32 4.8 is kind of picky with macros and some complicated template
stuff. Luckily there was another way to represent the
SFINAE code that works on all platforms. Yay!

Change-Id: Idc2e38f47bfdc57b394550bfa0f53cc0b825df25
seudolocaleGenerator.cpp
64587af8179affd38ee26543b748f2d63b7f67bb 19-Feb-2016 Adam Lesinski <adamlesinski@google.com> AAPT2: Support building, linking, and merging static libraries

Android static libraries are like APKs but they contain much more debugging
and source information. We need to treat them differently in 3 ways:

1) When building a static library, we skip things like ID assignment and
product/config stripping. Source information is emitted as well.
2) When building a static library and linking against another
static library, we don't want to merge, we want to simply reference.
3) When building an app that uses static libraries, we want to merge
the static library under the same package with or without mangling.

Bug:25958912
Change-Id: I425e032857936a3e83173c1edc2a6cdc6020b842
ompile.cpp
144c5eabe52f61e9afc08c461142878d10f5e443 01-Mar-2016 Adam Lesinski <adamlesinski@google.com> AAPT2: Fix segfault when showing error in 9-patch

Change-Id: I8f457212efc27480758a7157455d98b5e316f772
ng.cpp
355f285ffd000f6cfe76680eb22d010546d124bb 14-Feb-2016 Adam Lesinski <adamlesinski@google.com> AAPT2: Implement density stripping and initial Split support

When a preferred density is supplied, the closest matching densities
will be selected, the rest stripped from the APK.

Split support will be enabled in a later CL. Command line support is still
needed, but the foundation is ready.

Bug:25958912
Change-Id: I56d599806b4ec4ffa24e17aad48d47130ca05c08
ompile.cpp
e4bb9eb5af5b0899dc0921d5580220b20e15bd5a 13-Feb-2016 Adam Lesinski <adamlesinski@google.com> AAPT2: Introduce notion of 'product' to ResourceTable

This allows us to preserve the various product definitions during the compile
phase, and allows us to select the product in the link phase.

This allows compiled files to remain product-independent, so that they do not need
to be recompiled when switching targets.

Bug:25958912
Change-Id: Iaa7eed25c834b67a39cdc9be43613e8b5ab6cdd7
ompile.cpp
seudolocaleGenerator.cpp
59e04c6f92da584b322c87072f18e6cab4de4c60 05-Feb-2016 Adam Lesinski <adamlesinski@google.com> AAPT2: Switch to protobuf for intermediate format

Without needing to conform to the runtime data format,
it is much easier to add new features such as debugging symbols
and carrying over product data to link time.

This also simplifies the runtime format parser and serializer,
which will change much less frequently than the protobuf intermediate
format.

Change-Id: I209787bbf087db0a58a534cb8511c51d21133e00
ompile.cpp
dAssigner.cpp
52364f7ae31716d7827ea8f8566f4a28bd30a921 11-Jan-2016 Adam Lesinski <adamlesinski@google.com> AAPT2: Variety of small fixes to get the build working

- Add option to rename package in AndroidManifest.xml
- Support default versionName and versionCode
- Accept True and False as valid booleans

Change-Id: I400e350b9dcd0fd1c197d1929144299c7823617d
ompile.cpp
979ccb2e6f3f1f7f00a448eb440a85daf033dc9e 11-Jan-2016 Adam Lesinski <adamlesinski@google.com> AAPT2: Warn when positional arguments exist and --legacy is on

This is normally an error, but old AAPT didn't check for it correctly,
so many projects violate this. With --legacy, this becomes a warning.

Change-Id: I23647e029930e11b719591cd38609e1b43247e20
ompile.cpp
7751afc796842bbb24bfbb19bd0fee4a7b7c8a4e 07-Jan-2016 Adam Lesinski <adamlesinski@google.com> AAPT2: Fix product support

Previously the default product wasn't tried if 'default' wasn't specified on the command line.
Also adds support for multiple products.

Change-Id: I1e4872b34bb8d609b6444841a4e7e4dbb3bbb76b
ompile.cpp
198ce1a5e6fbe2cb84263e427032e9715e27379f 07-Jan-2016 Adam Lesinski <adamlesinski@google.com> Merge "AAPT2: Port AAPT pseudolocalization to AAPT2"
393b5f0d6130d3848dd82075986a5cf40c09ce44 17-Dec-2015 Adam Lesinski <adamlesinski@google.com> AAPT2: Port AAPT pseudolocalization to AAPT2

Pseudolocalization happens at the compile phase. Pseudolocalized
values are weak, such that manually specified values will take precedence.

Change-Id: I5e064ce0d270c9f4f9022f75aecedab9d45bc980
ompile.cpp
seudolocaleGenerator.cpp
seudolocaleGenerator.h
seudolocaleGenerator_test.cpp
seudolocalizer.cpp
seudolocalizer.h
seudolocalizer_test.cpp
1b1f1b14eef5f73a82c1bb7cefd63ded5a9f6ebb 22-Dec-2015 Dan Willemsen <dwillemsen@google.com> AAPT2: Fix compiler error in 32-bit host test

We now default host native tests to build both 32-bit and 64-bit
versions.

The 32-bit version of libaapt2_test was broken because it was comparing
an unsigned int to the result from std::count(std::vector), which is a
signed int. The 64-bit version compiled fine, since
std::count(std::vector) returns a long.

Change-Id: I786fcd8a54d9f78b76b19ef82ab8dda6f5c42197
mlIdCollector_test.cpp
a40e972fdaa68fc486ff90a319195515819068b2 25-Nov-2015 Adam Lesinski <adamlesinski@google.com> AAPT2: Support compiling a res/ directory and output to zip

This allows us to compile an entire directory and output to a single
file. This is important to support generated resources in the make
build, since we may not know what resources get generated.

The link step will accept the zip and read the contents of it as if they
were passed in on the command line.

Change-Id: If1a51b0abe772350c24074353eb4989953c2e0cb
ompile.cpp
467f171315f9c2037fcd3eb5edcfabc40671bf7b 17-Nov-2015 Adam Lesinski <adamlesinski@google.com> AAPT2: Fail compiling when private symbols are referenced

Also moved some XML specific stuff into its own directory,
and refactored ReferenceLinker a bit.

Change-Id: I912247a82023c1bbf72dc191fbdaf62858cbec0c
ompile.cpp
mlIdCollector.cpp
mlIdCollector.h
mlIdCollector_test.cpp
83f2255f69729e0e97539e96e5e6161843e85823 07-Nov-2015 Adam Lesinski <adamlesinski@google.com> AAPT2: Disambiguate merging of resources

Merging local app resources is slightly different than merging
resources from a static library.

Local app resources may not have a package name set, but we do take interest in the
ID set for the package (should be 0x0 or match the ID of the app we're building).

Static library resources have an explicit package name defined for them, so we
only merge resources from that package.

Change-Id: I95e559ae94cc1df6972e77a347b1b37a93674c4d
ompile.cpp
9f22204c3a9ddac4f92573c9ab098e6cf3ed1cb4 04-Nov-2015 Adam Lesinski <adamlesinski@google.com> AAPT2: Fix small issue with detecting translatable resources

Change-Id: Idd21b5de4d20be06c6f8c8eb5a22ccd68afc4927
ompile.cpp
9ba47d813075fcb05c5e1532c137c93b394631cb 13-Oct-2015 Adam Lesinski <adamlesinski@google.com> Filter products during compile phase

Unfortunately there is no good way to deal with products in the link phase.
Products are like preprocessor defines in that they are processed early
and change the composition of the compiled unit.

Change-Id: I6d5e15ef60d29df8e83e059ba857c09333993779
ompile.cpp
1ab598f46c3ff520a67f9d80194847741f3467ab 14-Aug-2015 Adam Lesinski <adamlesinski@google.com> AAPT2: Separate out the various steps

An early refactor. Some ideas became clearer as
development continued. Now the various phases are much
clearer and more easily reusable.

Also added a ton of tests!

Change-Id: Ic8f0a70c8222370352e63533b329c40457c0903e
ompile.cpp
dAssigner.cpp
dAssigner.h
dAssigner_test.cpp
ng.cpp
ng.h
mlIdCollector.cpp
mlIdCollector.h
mlIdCollector_test.cpp