90919978e7ccf7dc25622e9d039a7e87ebe7ba11 |
|
02-Jun-2017 |
Adam Lesinski <adamlesinski@google.com> |
DO NOT MERGE: AAPT2: Allow undefined resources (placeholders) A resource defined like so: <item type="drawable" name="foo" /> should be assigned the value @null. The only exception is for <string> resources, which are given the empty string value (since <string></string> is ambiguous). The decision to use "" is based off the fact that old AAPT used to assign "" to all undefined resources, even non-string ones. Bug: 38425050 Test: make aapt2_tests Change-Id: Ib3e0f6f83d16ddd8b279c9fd44a07a37867b85e9
/frameworks/base/tools/aapt2/ResourceParser.cpp
|
e597d68d33c76c2b830f5497ed4ba74c5193a056 |
|
02-Jun-2017 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2: Allow any value type for <item> without format attr TO bring AAPT2 behavior in-line with AAPT, <item> has a default format of "any", and only becomes restricted with an explicit format attribute. Bug: 62260121 Test: make aapt2_tests Change-Id: Ife416f520e6c2710bb30e3ba3f2d4463794bfa06
/frameworks/base/tools/aapt2/ResourceParser.cpp
|
4488f1c74a0f7df09f2b201f7caa228d729e8389 |
|
27-May-2017 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2: Fix <add-resource> tag for overlays Bug: 38355988 Test: make aapt2_tests Change-Id: Iea8887f55f8ceb2c15bd963405fd132916173c0c
/frameworks/base/tools/aapt2/ResourceParser.cpp
|
d5fd76a2ff78400505ade936fc36e707d69ecf72 |
|
16-May-2017 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2: Respect format attr in <array> resource Bug: 38152130 Test: make aapt2_tests Change-Id: I84f352afb1a8fd2f329354f789aaa36c5ef88e47
/frameworks/base/tools/aapt2/ResourceParser.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
/frameworks/base/tools/aapt2/ResourceParser.cpp
|
ceb9b2f80f853059233cdd29057f39a5960a74ae |
|
16-Feb-2017 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2: Shared library support Test: make aapt2_tests Change-Id: I98dddf1367e6c0ac425bb20be46e6ff05f4f2f45
/frameworks/base/tools/aapt2/ResourceParser.cpp
|
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
/frameworks/base/tools/aapt2/ResourceParser.cpp
|
86d67df8d57b9537666f9b54a9ca563779a2288b |
|
31-Jan-2017 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2: Support CtsContentTestCases build - Add <feature-group> to ManifestFixer. - Support <meta-data> in <instrumentation> - Add support for <bag> and type="configVarying". Some CTS tests use this old notation, we need to support it (even though configVarying isn't anything supported by the framework convention). Change-Id: I6946fa633ce513ea8437c1496db883cf27dcf6de Test: make aapt2_tests
/frameworks/base/tools/aapt2/ResourceParser.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
/frameworks/base/tools/aapt2/ResourceParser.cpp
|
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
/frameworks/base/tools/aapt2/ResourceParser.cpp
|
b54ef10f55ab9f11fdc73b0436b708e518fb5029 |
|
21-Oct-2016 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2: Ensure string pool ordering is compact Keep styledstrings at the beginning of the StringPool to reduce the padding in the StyledString array. Bug:32336940 Test: manual Change-Id: Iec820c21a54daac40ecc3b2f87517a0f1efc9d3d
/frameworks/base/tools/aapt2/ResourceParser.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
/frameworks/base/tools/aapt2/ResourceParser.cpp
|
8c3f31f022f7e094fd227ef0c2987e0846cb3e43 |
|
07-Sep-2016 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2: Fix issue with styled string indices Styled strings use spans to denote which part is styled (<b>, <i>, etc). Spans are simply a range of indices into the original string. In Java, we use String and its internal representation, meaning we must encode the indices using UTF16 lengths. When the internal AAPT2 representation of strings switched to UTF8, the indices also began to index into the UTF8 string. This change reverts the indices to use UTF16 lengths. Bug:31170115 Change-Id: I07b8b5b67d2542c7e0a855b601cdbd3ac4ebffb0
/frameworks/base/tools/aapt2/ResourceParser.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
/frameworks/base/tools/aapt2/ResourceParser.cpp
|
36c73a595910e96f3552f938eeb81d46356067a1 |
|
11-Aug-2016 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2: Expose split support to command line Bug:30445078 Change-Id: If4b8530dba71b9059b8e62c04757da99c1119d22
/frameworks/base/tools/aapt2/ResourceParser.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
/frameworks/base/tools/aapt2/ResourceParser.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
/frameworks/base/tools/aapt2/ResourceParser.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
/frameworks/base/tools/aapt2/ResourceParser.cpp
|
7656554f91b40bc93bf94c89afcad4a9a8ced884 |
|
11-Mar-2016 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2: Add descriptions of Attributes in Styleables for R.java Change-Id: I69e7b73cbdfe4baf502348397435c501ae29ff5e
/frameworks/base/tools/aapt2/ResourceParser.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
/frameworks/base/tools/aapt2/ResourceParser.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
/frameworks/base/tools/aapt2/ResourceParser.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
/frameworks/base/tools/aapt2/ResourceParser.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
/frameworks/base/tools/aapt2/ResourceParser.cpp
|
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
/frameworks/base/tools/aapt2/ResourceParser.cpp
|
7ff3ee19f4b831a526baf4b928d1ac172d070d82 |
|
15-Dec-2015 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2: Respect format attribute of <item> tag An <item> is a general tag that can override certain behavior. For instance, this is allowed: <item name="foo" type="integer" format="float">0.4</item> Even though without the format attribute, this would be illegal. Change-Id: I8133ce59e14719a70d7476a1464c3f564c435289
/frameworks/base/tools/aapt2/ResourceParser.cpp
|
a6fe345be955368a13aea76aefb4db821aad11df |
|
10-Dec-2015 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2: Fix overlay support Supports the <add-resource> tag and mimics old AAPT behavior of not allowing new resources defined unless <add-resource> was used or --auto-add-overlay was specified. Change-Id: I9b461137357617ade37fd7045b418b8e6450b9c4
/frameworks/base/tools/aapt2/ResourceParser.cpp
|
28cacf091ad2b1c2749e77f590e9523e58735252 |
|
23-Nov-2015 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2: Record source/comments for compound values' children Values like styles or arrays have children which need to have their source and comments preserved. Change-Id: I6fc713ba36627e6d66c7930b4080cc1403bac207
/frameworks/base/tools/aapt2/ResourceParser.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
/frameworks/base/tools/aapt2/ResourceParser.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
/frameworks/base/tools/aapt2/ResourceParser.cpp
|
abf83cbe4f63cd76043aab89cd0e08525560fea2 |
|
17-Nov-2015 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2: Prevent duplicate enums/flags Change-Id: I998cba12ac194000e9c778cb620ed7ab33003e7d
/frameworks/base/tools/aapt2/ResourceParser.cpp
|
fa10505ceaf9d4c41b76bb1b32f257926e96e441 |
|
07-Nov-2015 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2: Accept aliases defined for external resource types Resource types that are typically stored outside of the resource table (like layout, xml, drawable) can only have aliases (reference to another resource). Change-Id: Idb768801f02bb142e5be5e438904f221499bd756
/frameworks/base/tools/aapt2/ResourceParser.cpp
|
27afb9e8894b512b21fcca6ce142f40f1ee16cbb |
|
07-Nov-2015 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2: Add support for clearer in-progress public attributes Before, the ID assigned to a public resource without an explicitly set id was more difficult to figure out. It would be the next available ID. AAPT2 introduces a new way to specify public attributes in progress. <public-group type="attr" first-id="0x0101047f"> <public name="foo" /> <public name="bar" /> ... </public-group> The IDs assigned to each resource is auto-incremented starting from `first-id`. This also keeps resource's with the same type grouped together so that the auto-incrementing nature is evident. Also, due to how AAPT2 was implemented, this is required :P Change-Id: I95ea92ad0405e87ed0b1766879bb2f1d9d0b636e
/frameworks/base/tools/aapt2/ResourceParser.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
/frameworks/base/tools/aapt2/ResourceParser.cpp
|
9f22204c3a9ddac4f92573c9ab098e6cf3ed1cb4 |
|
04-Nov-2015 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2: Fix small issue with detecting translatable resources Change-Id: Idd21b5de4d20be06c6f8c8eb5a22ccd68afc4927
/frameworks/base/tools/aapt2/ResourceParser.cpp
|
b23f1e077b02a1d62bcf5e34655e8dc979e124fa |
|
03-Nov-2015 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2: Verify positional Java String format arguments in strings Change-Id: Id415969035a0d5712857c0e11e140155566a960c
/frameworks/base/tools/aapt2/ResourceParser.cpp
|
ca5638fd85098c3d0a699492751043545f75553a |
|
21-Oct-2015 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2: Support generating Manifest.java This includes comments from AndroidManifest.xml. Change-Id: I412d9ecb12bad20a49a683d6b3bea4a0be1235ae
/frameworks/base/tools/aapt2/ResourceParser.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
/frameworks/base/tools/aapt2/ResourceParser.cpp
|
9e10ac70155c993e7053323ad36beaea7bf7d54f |
|
16-Oct-2015 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2: Process <java-symbols> and private symbol package Need to introduce the idea of multiple levels of visibility to support <java-symbol>. Public, Private, Undefined. Public means it is accessible from outside and requires an ID assigned. Private means that we explicitly want this to be a symbol (show up in R.java), but not visible to other packages. No ID required. Undefined is any normal resource. When --private-symbols is specified in the link phase, these resources will not show up in R.java. Change-Id: Icba89221e08e685dee7683786aa7112baf28c856
/frameworks/base/tools/aapt2/ResourceParser.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
/frameworks/base/tools/aapt2/ResourceParser.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
/frameworks/base/tools/aapt2/ResourceParser.cpp
|
dfa5e0705ff82f15e228ba076bc192893bcbe118 |
|
13-May-2015 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2: Fix issue where @null was wrongly encoded @null must be encoded as TYPE_REFERENCE with a value of 0. TYPE_NULL is used by the runtime as a placeholder when resolving style attributes. If we set a style attribute to TYPE_NULL, the runtime will throw. The runtime will convert a TYPE_REFERENCE with value 0 to a proper null value. Change-Id: Id983ca7e1fbee3124dddafe32f1b5741b824225b
/frameworks/base/tools/aapt2/ResourceParser.cpp
|
bdaa092a193d8ddccbd9ad8434be97878e6ded59 |
|
09-May-2015 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2: inferred style parent processing Change-Id: I8fbc4feef16b6039cf4c526fcfb767dc75a9c131
/frameworks/base/tools/aapt2/ResourceParser.cpp
|
24aad163bc88cb10d2275385e9afc3de7f342d65 |
|
25-Apr-2015 |
Adam Lesinski <adamlesinski@google.com> |
Add namespace handling in attribute values Previously, you could only reference namespace prefixes in attribute names: <View xmlns:appcompat="http://schemas.android.com/apk/res/android.support.v7.appcompat" appcompat:name="hey" ... Now you can also reference them in resource names within an attribute value: ... android:text="@appcompat:string/confirm" ... Which will be treated as "@android.support.v7.appcompat:string/confirm". Change-Id: Ib076e867a990c80cf877a704eb77cd1ef0b23b52
/frameworks/base/tools/aapt2/ResourceParser.cpp
|
769de98f2dd41bfe39a1c9f76aefd1ad58942733 |
|
11-Apr-2015 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2: Add library support Change-Id: I307f56d9631784ab29ee4156d94886f9b2f25b30
/frameworks/base/tools/aapt2/ResourceParser.cpp
|
ca2fc353c2b07e24e297fdc8426c7abd601d908b |
|
03-Apr-2015 |
Adam Lesinski <adamlesinski@google.com> |
Fix windows build of AAPT2 Change-Id: Ib8e1a4322510b582e9600a08d3118842c9abc73c
/frameworks/base/tools/aapt2/ResourceParser.cpp
|
6f6ceb7e1456698b1f33e04536bfb3227f9fcfcb |
|
14-Nov-2014 |
Adam Lesinski <adamlesinski@google.com> |
AAPT2 First checking of AAPT2. The individual phases of AAPT2 work, but there are some missing pieces. For early testing we are missing: - Need to properly mark file references and include them in package - Need to package into zip Final AAPT for apps we are missing: - Need to crush PNGs - Need to parse 9-patches - Need to validate all of AndroidManifest.xml - Need to write align method to align resource tables for splits. Final AAPT for apps + system we are missing: - Need to handle overlays - Need to store comments for R file - Need to handle --shared-lib (dynamic references too). New AAPT features coming: - Need to import compiled libraries - Name mangling - R file generation for library code Change-Id: I95f8a63581b81a1f424ae6fb2c373c883b72c18d
/frameworks/base/tools/aapt2/ResourceParser.cpp
|