Commit Graph

5760 Commits

Author SHA1 Message Date
Tobias Thierer
162fbe7844 Merge "Update locked_region_code_injection tool to ASM 6.0-BETA." am: 26817938f6 am: e69366ff27 am: 8e60defe4b
am: b5a80794bb

Change-Id: I4508affe416099033cc497db5fb1894e48a9726e
2017-10-15 03:54:47 +00:00
Tobias Thierer
b5a80794bb Merge "Update locked_region_code_injection tool to ASM 6.0-BETA." am: 26817938f6 am: e69366ff27
am: 8e60defe4b

Change-Id: Ic425066feb4288c37154d8b0c487aeda93a6ac59
2017-10-15 03:18:47 +00:00
Tobias Thierer
e69366ff27 Merge "Update locked_region_code_injection tool to ASM 6.0-BETA."
am: 26817938f6

Change-Id: I193d04b7a4ebf0f39f60ac275a7eeb93499ded9d
2017-10-15 02:38:05 +00:00
TreeHugger Robot
8e1c391791 Merge "AAPT2: Flatten AndroidManifest.xml stringpool in UTF16" 2017-10-14 02:40:16 +00:00
Adam Lesinski
ea13c1a234 AAPT2: Flatten AndroidManifest.xml stringpool in UTF16
A few OEM devices have introduced a memory corruption bug
that is only triggered when an application's AndroidManifest.xml
uses UTF8 string pools. Workaround this by only encoding
AndroidManifest.xml with UTF16 strings.

Bug: 64434571
Test: manual
Change-Id: I2ee50d1b2b5942d971ef2a544c878de63f67c652
2017-10-13 12:42:47 -07:00
Adam Lesinski
ec58a00635 AAPT2: Update SDK development codename to P
Also deleted unused method of finding attribute API levels.

Test: none
Change-Id: I92c1dd398bde3b19da2d274b6abda12636aa3d4f
2017-10-13 12:31:34 -07:00
Tobias Thierer
26817938f6 Merge "Update locked_region_code_injection tool to ASM 6.0-BETA." 2017-10-13 17:40:50 +00:00
Donald Chai
a7963492dd Merge "AAPT: treat "-I" with lower precedence than main APK for dumping." 2017-10-13 16:40:03 +00:00
Donald Chai
d1ac6e1f9e AAPT: treat "-I" with lower precedence than main APK for dumping.
This is the desired behavior if resource IDs may overlap, and also happens to
improve the behavior of:

  aapt dump -I base.apk badging feature.apk

when both APKs use the same package name with different package IDs
(base=0x7F, feature=0x80).  Previously, the final call to
DynamicRefTable::addMapping was for base.apk, and all references to 0x80 were
rewritten in DynamicRefTable::lookupResourceId to 0x7F.  After this
change resources defined in both APKs are resolved correctly.

Note that this is a bit of kludge, and APKs should use different names
to avoid conflating the package IDs.

Fixes: 67070085
Bug: 64058531
Test: manual with sample in b/67070085#comment2
Change-Id: I285adb6f44a297440b08fc7a1f9ad73c700eb9bc
2017-10-12 21:34:22 -07:00
Tobias Thierer
95aa2ea9d8 Update locked_region_code_injection tool to ASM 6.0-BETA.
ASM 6 is required to read version 53 (OpenJDK 9) class files.

Test: make EXPERIMENTAL_USE_OPENJDK9=true services.core
      (in the presence of other unsubmitted CLs that fix
      other issues)
Test: Copied all required dependencies into a subdirectory lib/,
      then ran the steps from TestMain.java, both for OpenJDK 8
      and OpenJDK 9 toolchains.
Bug: 67676752

Change-Id: If324d8ea28450d9a8426a2279190b2f4d9213ed5
2017-10-12 21:14:31 +01:00
Yi Jin
129fc6ce19 Implement Activity Manager Broadcasts dump protos
Bug: 66729158
Test: Manually build and flash the system.img and test "activity --proto
broadcasts"
Change-Id: I3cb7474c4a3ab092f38ed6a121b4d034cadfc402
2017-10-11 18:35:14 -07:00
Yi Jin
0473f88b9f Create protoc-gen-cppstream tool to auto-generate cpp proto field Ids.
It is very similiar to protoc-gen-javastream, which generates field Ids used
by ProtoOutputStream.cpp to dump protobuf data.

Bug: 65641021
Test: compile the streaming_proto:
      $ mmm -j frameworks/base/tools/streaming_proto/
      and run:
      $ PATH=$PATH:out/host/linux-x86/bin/protoc-gen-cppstream aprotoc
      --cppstream_out=tmp/
      frameworks/base/core/proto/android/service/procstats.proto
      frameworks/base/core/proto/android/util/common.proto

Change-Id: I68becc80b5166455455c5df28cd698601b4a1c1d
2017-10-11 11:04:39 -07:00
Kweku Adams
a437d577ef Merge "incidentd: Fix printing of repeated scalar fields." 2017-10-06 00:38:53 +00:00
Kweku Adams
ee6495982f incidentd: Fix printing of repeated scalar fields.
Also add check for when enum value can't be found and fixing output
formatting for some int types.

BUG: 65633831
Test: check incident_report output of repeated enums.
Change-Id: I329eef9b3bb0026259ea465ab67e71952df1a4e4
2017-10-05 16:48:00 -07:00
Adam Lesinski
4670805ea4 AAPT2: Move format related files under same directory
Test: make aapt2_tests
Change-Id: Id72cdfc12ba3add294048e60c55f2461344464bf
2017-10-04 14:26:55 -07:00
Chih-hung Hsieh
e640a8284d Merge "Revert work around clang-tidy segmentation fault."
am: a47e513464

Change-Id: Ie04d0d16a05c35a865776571f95078e63bc1bf47
2017-10-04 06:38:31 +00:00
Chih-Hung Hsieh
ca8dbebe1e Revert work around clang-tidy segmentation fault.
Bug: 34740546
Test: build with WITH_TIDY=1 and
WITH_TIDY_CHECKS="*,-readability-*,-google-readability-*,-google-runtime-references"

Change-Id: If99c75cab6a2bec0c6b38aa17189668b4943478d
2017-10-03 20:23:10 -07:00
Adam Lesinski
897f6ddd31 Merge "AAPT2: Preserve line numbers when deserializing from binary XML" into oc-mr1-dev am: 9b581c7bc1
am: 8284349fc9

Change-Id: Iadd7362ae8456279ebec3a4577ba5be0c8bf19d7
2017-10-03 22:07:18 +00:00
Adam Lesinski
8e43e0d0ad Merge "AAPT2: Fix R.java styleable + indices ordering" into oc-mr1-dev
am: b986ebce75

Change-Id: I16382162fecf323074c13b376a23fccab1da092b
2017-10-03 22:02:20 +00:00
Adam Lesinski
8284349fc9 Merge "AAPT2: Preserve line numbers when deserializing from binary XML" into oc-mr1-dev
am: 9b581c7bc1

Change-Id: I55d8c73df0ce751472e58a9ae505c94edc90c68e
2017-10-03 21:51:09 +00:00
TreeHugger Robot
b986ebce75 Merge "AAPT2: Fix R.java styleable + indices ordering" into oc-mr1-dev 2017-10-03 21:24:48 +00:00
Shane Farmer
e17993597e AAPT2: Set compatible-screens in manifest for multi-APK
If an artifact in a multi-apk set is for a scpecific set of screen
densities then update the manifest to set the compatible-screens element
to match.

Test: ran unit tests
Test: manually ran optimize command

Change-Id: I07e90850ab2f4647a8623acbeaccbebbe81c3a6a
2017-10-03 16:14:07 +00:00
Shane Farmer
810fd18435 AAPT2: Update versionCode in multi-APKs.
Set versionCode in the AndroidManifest.xml so each artifact has a unique
version code. This will allow the play store to serve up the correct
APKs.

The versionCode is determined by taking the versionCode from the input
APK and adding the configured version to that. If an artifact does not
have a version, the next version is used based on the order in the
configuration file. If the firs artifact does not have a version, it
starts at 1, so that all artifacts have a different version code to the
base APK.

Bug: 64972562

Test: unit tests
Test: manually optimized an APK into multiple APKs and confirmed versions:
  aapt dump badging ${apk} | grep versionCode

Change-Id: Ie12b3e42bbd8ce9a2819712c2c56b24c0a901e6b
2017-10-03 16:13:04 +00:00
Shane Farmer
3edd472643 AAPT2: Set the minSdkVersion when generating multiple APKs.
When generating multiple APKs from a configuration file, check to see if
we have filtered resource by minSdkVersion and update the manifest to
reflect this. We only want to inflate and modify the manifest file if
there is an update to be applied.

Bug: 37944703
Bug: 67005138

Test: Ran unit tests
Test: Manually split an APK and verified the manifest by dumping with
      AAPT (both xmltree and badging).

Change-Id: I64a0e4889d7d9e57373369b044a091287b06cc35
2017-10-03 16:02:38 +00:00
Yunlian Jiang
08e76846b6 Merge "Replace strcpy with memcpy." am: bb115bac41 am: 16951dcb54 am: 23f6dca5fd
am: 61879522fe

Change-Id: Iaf1e0edbb3902714621492d6dd53458c1ad50b01
2017-10-03 04:44:37 +00:00
Yunlian Jiang
61879522fe Merge "Replace strcpy with memcpy." am: bb115bac41 am: 16951dcb54
am: 23f6dca5fd

Change-Id: I446973c3b96f253e3c3fc2dfda7647cd3e625916
2017-10-03 04:38:07 +00:00
Yunlian Jiang
16951dcb54 Merge "Replace strcpy with memcpy."
am: bb115bac41

Change-Id: I28c118a609d999fe1ef6bd126557e63076f452c6
2017-10-03 04:20:17 +00:00
Treehugger Robot
bb115bac41 Merge "Replace strcpy with memcpy." 2017-10-03 04:09:48 +00:00
Adam Lesinski
0da683bd8d AAPT2: Preserve line numbers when deserializing from binary XML
Bug: 65827146
Test: make aapt2_tests
Change-Id: Idbfea640eb8727fe209ebc6eb072296845d9f282
2017-10-02 17:00:07 -07:00
Adam Lesinski
1ee1a106c5 AAPT2: Fix R.java styleable + indices ordering
Make sure that Styleables are directly followed by their indices.
If not, Robolectric breaks. This is not strictly incorrect to have
an arbitrary ordering in R.java, but its easier to just support
Robolectric in this case.

Bug: 65837293
Merged-In: Ia59ba58427ade386d075ca9fc9eb5b53e35beca0
Test: make aapt2_tests

(cherry picked from commit af85c4deb667843a227d62275fe6992005f4c38d)

Change-Id: Ia59ba58427ade386d075ca9fc9eb5b53e35beca0
2017-10-02 15:42:24 -07:00
TreeHugger Robot
466df70cc5 Merge "AAPT2: Fix R.java styleable + indices ordering" 2017-10-02 09:43:01 +00:00
Adam Lesinski
761d4341fc AAPT2: Fix R.java styleable + indices ordering
Make sure that Styleables are directly followed by their indices.
If not, Robolectric breaks. This is not strictly incorrect to have
an arbitrary ordering in R.java, but its easier to just support
Robolectric in this case.

Bug: 65837293
Test: make aapt2_tests

(cherry picked from commit af85c4deb667843a227d62275fe6992005f4c38d)

Change-Id: Ia59ba58427ade386d075ca9fc9eb5b53e35beca0
2017-09-29 11:20:45 -07:00
Adam Lesinski
8cdca1bd72 AAPT2: Cleanup proto classes/methods and add XML serialization
Test: make aapt2_tests
Change-Id: I01ac2285af6771a683533c033a59ae6cfe875d93
2017-09-28 20:43:22 -07:00
Adam Lesinski
d3ffa844f5 AAPT2: Cleanup Visitors for XML and Values
Test: make aapt2_tests
Change-Id: Ib61f64c155a380115610edeaf2d65e60258a2426
2017-09-28 14:08:50 -07:00
Yunlian Jiang
d32ae10f4c Replace strcpy with memcpy.
This fixes the warning
Call to function 'strcpy' is insecure as it does not provide bounding of
the memory buffer. As a side effect, it sliences the warning
frameworks/base/tools/aapt/Images.cpp:1270:50: warning: Potential leak
of memory pointed to by field 'data' [clang-analyzer-unix.Malloc]
frameworks/base/tools/aapt2/compile/Png.cpp:562:42: warning: Potential
leak of memory pointed to by field 'data' [clang-analyzer-unix.Malloc].

Bug: None
Test: The warning is gone.

Change-Id: I25f68ff85bea7069c21549c7deb7920d1877069e
2017-09-26 16:02:11 -07:00
Adam Lesinski
b58c3ef023 AAPT2: Convert binary ResTable_config to proto
Test: make aapt2_tests
Change-Id: I8641f13ce41cd58ac8bc3da31c4e15a7b3f06092
2017-09-26 14:48:35 -07:00
Adam Lesinski
5bd4423710 AAPT2: Move to proto3
We're going to be using the Any proto field in ConfigDescription,
so migrate to proto3.

Test: make aapt2_tests
Change-Id: I43b91f4dfc448251f4352e48586b3b15502c033d
2017-09-26 12:07:51 -07:00
Adam Lesinski
e33de76a16 Merge changes Id8bdb14e,I573a6735,Ia804777f,Ia68122cb,Ia1997800, ... into oc-mr1-dev
am: e02983681a

Change-Id: I42369e6fb7bd121e45b5a002cd5f00e05221ead3
2017-09-15 16:57:21 +00:00
Adam Lesinski
689ce3f658 AAPT2: Bump to version 2.19
Test: manual
Bug: 65645766
Change-Id: Id8bdb14e498bd79ff642f9ad56ef05ec7a5825af
Merged-In: Id8bdb14e498bd79ff642f9ad56ef05ec7a5825af
2017-09-15 08:49:24 +00:00
TreeHugger Robot
a6f1cf4764 Merge "AAPT2: Bump to version 2.19" 2017-09-15 02:31:35 +00:00
Adam Lesinski
3420eed699 AAPT2: Bump to version 2.19
Test: manual
Bug: 65645766
Change-Id: Id8bdb14e498bd79ff642f9ad56ef05ec7a5825af
2017-09-14 17:00:56 -07:00
Adam Lesinski
a91d5c39ed AAPT2: Fix issue with resource deduping
Resource deduping relies on the definitions of
ConfigDescription.ConflictsWith, ConfigDescription.IsCompatibleWith,
and ConfigDescription.Dominates.

ConflictsWith is supposed to ignore range-based qualifiers, like
version, density, smallest width, screen size, etc.

This was not the case for screen size, and was assumed that the
choice of screen size is mutually exclusive.

This CL fixes the assumption and includes screen size (small, normal, large, xlarge)
as a qualifier that does not conflict.

Bug: 64397629
Bug: 65645766
Test: make aapt2_tests
Change-Id: I573a6735fedd7721a10ba32902bc5d27ef99b88e
Merged-In: I573a6735fedd7721a10ba32902bc5d27ef99b88e
2017-09-14 11:31:48 -07:00
Adam Lesinski
40e869e2a5 AAPT: Dump badging should pickup strings from the right package
A bug in the dump badging command caused strings to be looked up in the
first loaded package only.

Bug: 64948230
Bug: 65645766
Test: none
Change-Id: Ia804777fe3f963004a5c053129ef6e0c94b7f6a3
Merged-In: Ia804777fe3f963004a5c053129ef6e0c94b7f6a3
2017-09-14 11:31:40 -07:00
Adam Lesinski
f1a7e04851 AAPT2: Change the daemon mode to be line based
Accept a set of arguments separated by newlines.
This avoids path separator conflicts with the argument
format for passing splits.

Test: manual
Bug: 65645766
Change-Id: Ia68122cb77b7dde2292a0fd953e79f02996ac01c
Merged-In: Ia68122cb77b7dde2292a0fd953e79f02996ac01c
2017-09-14 11:31:30 -07:00
Izabela Orlowska
96ed7c3b17 AAPT2: better error handling for daemon mode
Test: manual
Bug: 65645766
Change-Id: Ia1997800ad94f386dbbb4195011395ecee1ba91f
Merged-In: Ia1997800ad94f386dbbb4195011395ecee1ba91f
2017-09-14 11:31:22 -07:00
Adam Lesinski
6e241e7e54 AAPT2: Fix regression in Manifest.java permissions
Permissions defined with the same leaf name emit the same
string symbol, which causes collisions. AAPT would override
the symbol with the last one seen.

Do the same thing as AAPT, but emit a warning.

Bug: 64472942
Bug: 65645766
Test: make aapt2_tests
Change-Id: I17b9dc7e8d8bd80db98869394c93695cb453bebd
Merged-In: I17b9dc7e8d8bd80db98869394c93695cb453bebd
2017-09-14 11:31:13 -07:00
Adam Lesinski
b791721cd1 AAPT2: Define intermediate compiled XML proto
This proto format is meant to encapsulate more information
that is specific to Android and allows for easier validation
and manipulation across tools.

Test: make aapt2_tests
Bug: 65645766
Change-Id: I13bc34a460671fc0a36246be0d287a3d37d244d6
Merged-In: I13bc34a460671fc0a36246be0d287a3d37d244d6
2017-09-14 11:31:04 -07:00
Adam Lesinski
44ec315e06 AAPT2: Add a daemon mode
Gradle and other build tools that need to frequently interact with aapt2
can use the daemon mode to issue regular CLI commands without paying
the process start cost for each invocation.

Test: manual
Bug: 65645766
Change-Id: I543858ed46496278bad643f0dae688c924ec6c3f
Merged-In: I543858ed46496278bad643f0dae688c924ec6c3f
2017-09-14 11:30:56 -07:00
Adam Lesinski
68b5e8a439 AAPT2: Fix mkdirs implementation
Once switched to using std::string, the mkdirs implementation was
trying to create an empty string when an absolute file path on
linux or macOS was used.

Bug: 62336414
Bug: 65645766
Test: manual
Change-Id: I52f3050b410a923ca48f353b0983667c16d00ee8
Merged-In: I52f3050b410a923ca48f353b0983667c16d00ee8
2017-09-14 11:30:48 -07:00
Adam Lesinski
5c33fb5408 AAPT2: Change XmlDom to exclude Namespace as a node
In preparation for exporting an XML proto format for UAM to consume,
this change brings the XML DOM API more in line with other APIs that
do not make the Namespace a separate node.

Treating Namespace declarations as just properties of an Element
node makes the implementation of algorithms much simpler, as
the constraints that Namespace nodes have only one child
are now built in and traversing to find Element nodes
is much simpler.

Also made a bunch of quality of life improvements, like formatting and
comment style.

Test: make aapt2_tests
Bug: 65645766
Change-Id: Ib97ff1c4252b7907e2cc1f13a448dc4ca3b809a4
Merged-In: Ib97ff1c4252b7907e2cc1f13a448dc4ca3b809a4
2017-09-14 11:30:38 -07:00