24 Commits

Author SHA1 Message Date
Adam Lesinski
a1ad4a812a AAPT2: Proguard rules generation added.
Change-Id: Ifbe79516cd9a1ade471e211a259301c63b62ac67
2015-06-09 11:14:24 -07:00
Adam Lesinski
8c831ca87b AAPT2: Add manifest merging
Now that AAPT2 is library-aware, it needs to take care of
all library related work, including merging manifests.
The logic was taken from the current Java ManifestMerger.

Change-Id: Id93f713f27ae8617922bf89e325e45be9f863c06
2015-06-04 18:00:33 -07:00
Adam Lesinski
75f3a55cc5 AAPT2: Change xml file parsing to DOM based
We modify the XML of layouts and AndroidManifest enough
that it warrants we operate on the tree in memory.
These files are never very large so this should be fine.

Change-Id: I5d597abdb3fca2a203cf7c0b40fcd926aecb3137
2015-06-04 11:37:05 -07:00
Adam Lesinski
39c353a6ca AAPT2: Fix layout versioning
Change-Id: I37190cf8a1f0a81c068aeb2b5326b3b3080f75a5
2015-05-14 20:56:10 -07:00
Adam Lesinski
dfa5e0705f 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
2015-05-12 21:56:43 -07:00
Adam Lesinski
d13fb24986 AAPT2: Debug: Dump only targetted style
Change-Id: Id7c5a4b5d0880520e1fea05e5a31d398946c5f05
2015-05-12 20:45:20 -07:00
Adam Lesinski
bdaa092a19 AAPT2: inferred style parent processing
Change-Id: I8fbc4feef16b6039cf4c526fcfb767dc75a9c131
2015-05-12 20:41:31 -07:00
Adam Lesinski
330edcdf13 AAPT2: Support static lib referencing static lib
When a static library A references static library B,
and app C references both A and B, we get the following symbol merging,
symbols from library B get imported twice.

We must only check that symbol references to library B are valid
when building library A. We should only merge all the symbols
when building final app C.

Change-Id: I23cba33b0901dcbb5328d9c9dfaa6a979c073c36
2015-05-12 20:41:31 -07:00
Prerepa Viswanadham
d1808401ca Merge changes from topic 'mwd-merge-050415' into mnc-dev
* changes:
  Merge commit 'b6f59f4' into master_merge
  Merge commit 'f6db0ce' into master_merge
  Merge commit '17455a3' into master_merge
  Merge commit 'b4d5b32' into master_merge
  Merge commit 'a1a2fa7' into master_merge
  Merge commit '8dfdb98' into master_merge
  Merge commit 'eba66c3' into master_merge
2015-05-05 01:06:38 +00:00
Adam Lesinski
6d8e4c48f9 AAPT2: Add option to generate static library
Difference between normal app and static library is that
the R file uses non-final fields, and the extra chunks added
by AAPT2 remain in the final APK.

Change-Id: I61416387ca9bb3c21857ff7cfab5847ac3edf57a
2015-05-04 16:43:24 -07:00
Adam Lesinski
838a68705b AAPT2: Include package name of attributes in styleable from another package
Change-Id: I44f902e297238e7ee4ae27c02aaaf9e148652d2a
2015-05-04 16:43:24 -07:00
Adam Lesinski
6ff19664f9 AAPT2: Record public status in a more robust way
This allows us to store the source and comments of a resource's
public declaration and avoids issues where there is no default
configuration for a publicly declared resource (like with drawables
of various densities) and AAPT2 mistakenly took this as an error.

Change-Id: I07a2fe9f551daefcce842f205fb219d2fa453ebc
2015-05-04 16:43:24 -07:00
Adam Lesinski
24aad163bc 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
2015-05-04 16:43:24 -07:00
Narayan Kamath
231e054dfd Add a libbase static depedency for aapt2.
Required by libziparchive.

Change-Id: Ifa33c9e44ebd583cf58b8a1239061c613fde92bc
2015-04-29 16:32:23 +01:00
Adam Lesinski
d5c4f8723c Properly mangle file names
Change-Id: I49c0f82e8c06f056198eb64b8369d83403b74321
2015-04-22 17:34:55 -07:00
Adam Lesinski
5886a92eb6 Fix up the command line, add flags.
Change-Id: I420bd0212fc7541668bd095b88295564d3d11f6c
2015-04-15 20:29:48 -07:00
Adam Lesinski
769de98f2d AAPT2: Add library support
Change-Id: I307f56d9631784ab29ee4156d94886f9b2f25b30
2015-04-15 19:56:59 -07:00
Adam Lesinski
c7e2432dec AAPT2: Create Makefile
Makefile that uses zip for assembling the final APK. This is temporary and
helps speed up the rest of development.

Has to add a new 'manifest' phase that simply compiles the AndroidManifest.xml.
Manifests are handled differently and must be validated.

Change-Id: I0d8255b3ad0d0b0a322683077e3331ca93e37fa0
2015-04-10 19:07:51 -07:00
Adam Lesinski
4d3a987694 AAPT2: Adding basic binding support
This is incomplete. Still requires:

- filling in layout information in the resulting .bind.xml
- processing elements with <view class=""/>
- processing imports

Change-Id: Ie5d4c5e6435591bbed3248129a548736244894eb
2015-04-10 15:25:39 -07:00
Adam Lesinski
98aa3ad6e4 Add PNG and 9-patch support
Change-Id: I9ecdfdf82b82d59084490da518e167e256afd5f2
2015-04-09 17:19:06 -07:00
Adam Lesinski
feefeb4f30 AAPT2 statically link libz on Windows builds
Change-Id: I2abf47273173c470c04e00a54aa619fe1ce0e745
2015-04-03 12:44:40 -07:00
Adam Lesinski
ca2fc353c2 Fix windows build of AAPT2
Change-Id: Ib8e1a4322510b582e9600a08d3118842c9abc73c
2015-04-03 12:33:02 -07:00
Greg Hackmann
1fce4f9c89 aapt2: fix definition of G in Util.h
Change-Id: Icbefa425cf543f130deabab9e2e2e6c13ab672d3
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2015-04-02 20:31:17 -07:00
Adam Lesinski
6f6ceb7e14 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
2015-04-02 17:02:48 -07:00