c744ae8aca97edfb2422598ea620e8219449fa9b |
18-May-2017 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2: Implement attribute compat versioning This change defines some hardcoded rules to degrade attributes in newer SDKs to specific older attributes. An attribute with a degrade rule will generate a new XML for the API in which the attribute resulting from the degradation was introduced. Since API 22 (Lollipop MR1), attributes are correctly ignored and do not need to be versioned. In XML files defined for APIs 22+, the original and degraded attributes coexist in the same XML file. One such example is paddingHorizontal, introduced in API 26. paddingHorizontal degrades to paddingLeft and paddingRight, which were both introduced in API 1. Bug: 35763493 Test: make aapt2_tests Change-Id: I4aa8755a9ee2c0cc5afdc55c3d30093fd3a47f3d
ymbolTable.cpp
ymbolTable.h
|
1e4b0e54a3db31bdbcb9385bf22bab4b96096d1f |
28-Apr-2017 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2: Workaround for findViewById with package ID > 0x7f The entire View code base checks IDs against View.NO_ID except findViewById(), which checks to see if the ID is negative. Any package ID > 0x7f is interpreted as a negative number in Java (no unsigned ints), so this check prevents the use of IDs > 0x7f. findViewById is final, so support library workarounds are not possible. Instead, IDs (@id/foo) are just sentinels, their values don't matter. If building for pre-O devices, rewrite any references to these IDs of the for 0xPPTTEEEE, where PP > 7f, to 0x7fPPEEEE. The symbol table will check for potential collisions against the base APK, so this should be safe. Bug: 37498913 Test: manual Change-Id: Ife3bbd29db287757ef8a2ffd83053d97f1db2613
ymbolTable.cpp
ymbolTable.h
|
b522f04bc2a581e2877bef4a44ac00b827f879ed |
22-Apr-2017 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2: Allow truncating of package names ResTable_package header only allows 127 UTF-16 characters, so AAPT would truncate the real package name to fit. AAPT2 would error-out on any package name longer than 127 UTF-16 characters. This strictness is not required except when building shared libraries, which use the full package name as a way of identifying the runtime assigned package ID to package name mapping. Bug: 36940145 Test: make aapt2_tests Change-Id: I7d2b7e50c7ab30c6a6c4f15d310e711f68e35091
ResourceTableConsumer.h
|
f34b6f4f2b969b47a3f371eb9549e92ef1680d91 |
04-Mar-2017 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2: Add --package-id flag for feature-split suppport Bug: 35928935 Change-Id: Ia8496505e61cfcfdb8f9f62366d2f36e453db111 Test: make aapt2_tests
ymbolTable_test.cpp
|
b5dc4bd49a036e3403ca17e961d2c8e13e038295 |
23-Feb-2017 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2: Few tweaks to get shared-libraries working Test: manual (building shared support library demo) Change-Id: I4730645aa92ba1893baf67ffe35fbd4aac0f8e46
ymbolTable.cpp
|
ceb9b2f80f853059233cdd29057f39a5960a74ae |
16-Feb-2017 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2: Shared library support Test: make aapt2_tests Change-Id: I98dddf1367e6c0ac425bb20be46e6ff05f4f2f45
ymbolTable.cpp
ymbolTable.h
ymbolTable_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
ymbolTable.cpp
ymbolTable.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
ResourceTableConsumer.h
ymbolTable.cpp
ymbolTable.h
ymbolTable_test.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
ResourceTableConsumer.h
ymbolTable.cpp
ymbolTable.h
ymbolTable_test.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
ResourceTableConsumer.h
|
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
ymbolTable.h
|
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
ymbolTable.cpp
ymbolTable.h
|
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
ymbolTable_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
ResourceTableConsumer.h
ymbolTable.cpp
ymbolTable.h
ymbolTable_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
ResourceTableConsumer.h
|
626b3dbf74f02ae630ae0089632f5962340694dc |
07-Apr-2016 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2: Clean up R JavaDoc generation - Don't generate private attributes in public R.java - Strip out @SystemApi from comment when generating @android.annotation.SystemApi - Only emit a single line (up to the first period) of an attribute's comment within a styleable's attribute table. Change-Id: Id6316a6861540325934133958939a12074ad4428
ymbolTable.h
|
7656554f91b40bc93bf94c89afcad4a9a8ced884 |
11-Mar-2016 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2: Add descriptions of Attributes in Styleables for R.java Change-Id: I69e7b73cbdfe4baf502348397435c501ae29ff5e
ymbolTable.cpp
ymbolTable.h
|
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
ResourceTableConsumer.h
ymbolTable.cpp
ymbolTable.h
ymbolTable_test.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
ResourceTableConsumer.h
|
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
ymbolTable.cpp
|
a587065721053ad54e34f484868142407d59512d |
21-Nov-2015 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2: Verify min/max attr fields Integers are now checked to see if they fall in the range of min/max for the attribute they are assigned. Change-Id: I42c435b15fd3f0bd23691c83efccce4ad5973276
ymbolTable.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
ResourceTableConsumer.h
ymbolTable.cpp
|
e352b990e1dca7857a4d170f411ddad2065670ca |
16-Nov-2015 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2: Minor fixes to SymbolTable and diagnostic output The SymbolTable lookup relied on the configuration, which we NEVER want. Now we rely solely on the symbols defined in the ResTable and no specific configuration or value of that symbol. Also added some better source logging. Change-Id: I983855c283493e924b2e92a9fd8e4cb841769349
ymbolTable.cpp
|
b274e35abfbbd09e0fce983a215c11522c56cce2 |
07-Nov-2015 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2: Fix inclusion of comments in R.java javadoc Comments weren't being copied when merged from the various resource tables. Also refactored the JavaClassGenerator to omit a class if no entries exist for it. Change-Id: I6eaa89b7b3715bc05403635a2baf0d1db3efd142
ymbolTable.cpp
|
e78fd617ec60139a973a01925fa7adad31febb39 |
22-Oct-2015 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2: Move comments and source into Value Values are closely related to where they were defined, so this information should live inside the Value. This also enables comments to be attached to nested Values. Change-Id: Ic7481b5a5f26d0ef248d638e2e29252f88154581
ymbolTable.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
ResourceTableConsumer.h
ymbolTable.cpp
ymbolTable.h
ymbolTable_test.cpp
|