There was no check for whether we had already written a specific file path to the APK when using the convert command.
If the resources table points 2 resource IDs at the same file on disk, the convert command would write the file twice, creating two entries.
This holds a set of file paths already written and ignores duplicates.
Bug: 123271593
Test: Ran convert on linked bug's weird.apk
Test: aapt2_tests case for duplicate entries
Change-Id: Ia22515bf8e8297624aaadbf6a9e47159026c63e5
This gives better consistency with the release key. Also improve the
debug_sign script to use base64, to eliminate issues with escaping and
newlines.
Bug: 110509075
Test: atest CtsSignedConfigHostTestCases
Change-Id: Id8d7b6b5bee3340803d30d3a4a34c7e62f565a93
The annotation_processors property is deprecated, replace it with
plugins, and use java_plugin for modules that provide annotation
processors.
Bug: 77284273
Test: m checkbuild
Change-Id: I467b899e0c8f2c8fa74a9bfbe6e952ad0f7aa009
To try and solve test flakiness, hold the unique_ptr in the method scope to make sure it's cleaned up after we assert on it.
Bug: 123079798
Test: gonna merge and check for failures, since it passes locally
Change-Id: Id348d1112832cbb82f605a84ef675c25a7488b11
Do not copy the png data when compiling pngs.
Bug: 122950060
Test: aapt2 compile -o . BaseAppPhoto1_copy.png
Change-Id: I78fbdaa9a40ada406d7b07cf072d6cd76124168e
The annotation_processors property is deprecated, replace it with
plugins, and use java_plugin for modules that provide annotation
processors.
Bug: 77284273
Test: m checkbuild
Change-Id: I14ed4d81e097510866cbb9a27c72be4426117885
Also fix up some issues with expression parsing, type use annotations, etc.
Test: python tools/apilint/apilint_test.py
Change-Id: I38145a51470ce6c3e5813a546d681489fd87fc19
(cherry picked from commit 403c8e35d8)
Fixes false positives that occur when a class in current.txt is faulty, and an
entry for that class is then added to system-current.txt.
This was so because when parsing the previous revison's system-current.txt, we
did not know about the class and thus didn't look for it in current.txt, and
thus never recorded that the error is preexisting.
To avoid that, we track all classes in system-current.txt with a matching entry
in current.txt in the current revision, and later use that to look up all classes we
may have missed when examining the previous revision.
Test: python tools/apilint/apilint_test.py
Change-Id: Ibe09f1159e351e56b35b8816ce0db760de4ef791
(cherry picked from commit 61e3730bc0)
Fixes a bug where only the name instead of the fully qualified name was
considered when looking for a class, which lead to faulty results for inner
classes.
Test: python tools/apilint/apilint_test.py
Change-Id: Ib015669ed3faef21d2bdd16f1e27bc55c8669d70
(cherry picked from commit 2c5cacfd36)
Allows specifying a base current.txt and previous.txt file when linting
system-current.txt and test-current.txt to avoid false positive error
messages due to public API members not being duplicated in the respective
non-public APIs
Test: python tools/apilint/apilint.py --base-current=api/current.txt api/system-current.txt
Change-Id: I306a99b1423584ef3fcdc9272a83cb5eacc37227
(cherry picked from commit 7690d0d4ee)
It's a better alternative that should be used instead of adding
new "ForUser" or "AsUser" methods.
Bug: 115654727
Test: manual
Change-Id: I8742c2ef42d743ef69f8f7a91378f498fdc81e43
(cherry picked from commit 86445841ac)
We're starting to see "@interface" show up, so handle them like any
other interface. We're also seeing more details argument lists
with names and annotations; ignore them for now, since all our
existing lint checks work on the "real" data type.
Verified that it handles new support library current.txt files
without causing any regressions against existing framework
current.txt files.
Test: manual inspection
Bug: 111555356
Change-Id: Id11c3561edd317e4ba1a9b43993fd96d8243e00d
(cherry picked from commit bd26119169)
Refactor of `hiddenapi` changed the output format of public/private API
lists to a single CSV file. Change API list generation accordingly.
In order to avoid special-casing this CSV file, it is treated the same
as the CSV files produced by `class2greylist`. The merging rules are
relaxed so that signatures in CSV files are not checked against
a pre-initialized set of all signatures (previously generated from the
public/private API files). This should not lead to build errors as the
CSV files are always auto-generated, and a missing/extra signature will
be caught by `hiddenapi`.
API lists in frameworks/base/config are processed later and checked
that they are a subset of the signatures in CSV.
Bug: 119068555
Test: compiles, hiddenapi-flags.csv unchanged
Change-Id: I33f2cbaa15f2d423a75e6ca64abe1c5b0c40c86f
Libcore class members annotated with @CorePlatformApi now generate
a new hiddenapi flag. This is the first of "domain API" flags which
can be used in conjunction with API list flags. Therefore modify
the 'generate_hiddenapi_lists.py' logic to treat them differently.
Specifically, the script marks otherwise unassigned class members
blacklisted. A class member with 'core-platform-api' may still not
be assigned an API list and should be blacklisted.
Bug: 119068555
Test: m appcompat
Change-Id: I2b67e7a619677e853c87bc2da934410458ce4d14
Sometimes AAPT2 doesn't include the path of the file in the error
message, or just outputs a warning where an error should be printed
(but the overall build still fails without an error message). Let's
always include the file path to make it easier for the users to find out
the source of the failure.
Fixes: 122856772
Test: manual
Change-Id: Ibbbfd21b372792e5eaa40278186eb64cdfb0f60e