A resource marked SPEC_OVERLAYABLE in the base package was not marked as
such in the corresponding split packages. Add missing copy statement.
Test: manual (aapt2 dump test content in libandroidfw)
Change-Id: I800e92111a9da7c6f5e83f8a546d260c8d93b308
(cherry picked from commit ee41b3a36dcd87f79f3c2a21383a97743530099d)
<overlayable> tags can now have policy elements that indicate which
partition the overlay apk must reside on in order to be allowed to
overlay a resource. This change only adds parsing of <policy> and
encoding of policy in the proto ResourceTable. A later change will add
the encoding of policy and overlayable in the binary APK.
<overlayable>
<policy type="system|vendor|product|product_services|public" >
<item type="string" name="oof" />
</policy>
</overlayable>
Bug: 110869880
Test: make aapt2_tests
Change-Id: I8d4ed7b0e01f981149c6e3190af1681073b79b03
If a proto apk is missing resources.pb, AAPT2 would fail to detrmine the
apk format because of an incorrect check. This fixes that check and
removes the checking fuction from the LoadedApk header.
Bug: 117820549
Test: removed resources.pb from proto apks and confirmed that loading in
apks still works
Change-Id: If3628a821e7b59c7dfcbefb502b6080be083cec1
Respect the compression the original compression of xml files when using
aapt2 convert. Uncompressed files should remain uncompressed, and
compressed files should remain compressed.
Bug: 117289326
Test: manual
Change-Id: I81b431b4a4abd81f5694ea7dc3b3c6ec8c13ca32
As a preparation in refactoring how we handle dist, I'm making
everything use dist-for-goals. In this case, instead of fully relying on
a phony rule, write the gtest xml into an intermediate folder, and use
dist-for-goals to copy that into the dist dir.
Bug: 117463001
Test: DIST_DIR=dist m aapt2_run_host_unit_tests dist
Test: DIST_DIR=dist m aapt2_run_host_unit_tests dist (reruns test)
Change-Id: I166c2b3088703875c6028c3479aec7cf09f3f635
This command prints out the parent graph of a given style
Test: out/host/linux-x86/bin/aapt2 dump styleparents \
--style Widget.MaterialComponents.TextInputLayout.FilledBox \
out/target/product/generic_x86/system/priv-app/SystemUIGoogle/SystemUIGoogle.apk
Change-Id: Ib2ace7e90bee6f1c4b6a184edc591b1a3993db75
This change refactors the dump commands to inherit from a base
DumpApkCommand and adds a command that prints out an ASCII
image of a badger if the user wrote "badger" instead of
"badging". The command is hidden from the help menu.
Bug: 73535002
Test: manual
Change-Id: I9bdd8a7bbf6a4282c4933e5c478f6d1d8e32d99e
Teach "aapt2 link" about a new flag --no-resource-removal. When given,
aapt2 will not filter out resources that lack default values. This is
useful mostly when building overlay packages that define resources for
non-default configurations, such as only for values-sv.
Test: manual: build package with resource only in values-vs, verify apk with aapt2 dump
Change-Id: Idc513bcb3f43bbff7f073163562c3dfccdb9bc9b
Merged-In: Idc513bcb3f43bbff7f073163562c3dfccdb9bc9b
Teach "aapt2 link" about a new flag --no-resource-removal. When given,
aapt2 will not filter out resources that lack default values. This is
useful mostly when building overlay packages that define resources for
non-default configurations, such as only for values-sv.
Test: manual: build package with resource only in values-vs, verify apk with aapt2 dump
Change-Id: Idc513bcb3f43bbff7f073163562c3dfccdb9bc9b
This is to allow idmap2 to access ConfigDescription.
Test: libandroidfw_tests
Test: aapt2_tests
Change-Id: I54210bbbd8dad5903cb7100807df977efa394ad5
Merged-In: I54210bbbd8dad5903cb7100807df977efa394ad5
You can now do a new form of <uses-package> that allows you to
specify a type of package along with required cert digests (like
uses-static-library).
This defines the new attribute needed for this and XML tag, and
updates aapt2 to actually allow uses-library in the manifest and
output this data with "dump badging".
While doing this I realized that "dump badging" was not printing
the data for uses-static-library or uses-library, so do those too.
Bug: 112113117
Test: manual
Change-Id: I5d02010aad9cb44675504a317df9cced421be8a1
Integer meta data values were not printing correctly and instead were
printing as empty strings. Attempt to retrieve the integer value of the
attribute if the value is not a string.
Bug: 117260085
Test: manual
Change-Id: I1cef672e03d07728819ca584b484dc372984c823
Per talks with Svet, it is time I became a co-owner of AAPT2 with
toddke. I look forward to continuing to support and improve AAPT2.
Change-Id: I3a0f1c8a708abc41045b95dc958dbeb96a5160ff
Some tests were not written to run on Windows correctly. Compile also
has a bug that caused using the --zip flag to fail on Windows.
iswspace does count the non breaking space as Whiespace on Windows but
not on Unix based systems
Bug: 117156986
Change-Id: I999375162bdfdf86fb25992ee88e2962ab90b577
Test: aapt2_tests and wine aapt2_tests.exe
It seems like GoogleTest prints string parameters before checking them.
This can be a problem in FileStream tests since these buffers are not
null terminated. ASan reports heap-buffer-overflow.
Test: m SANITIZE_HOST=address
out/soong/.intermediates/frameworks/base/tools/aapt2/aapt2_tests/linux_glibc_x86_64_asan/aapt2_tests \
LD_LIBRARY_PATH=out/soong/.intermediates/external/libcxx/libc++/linux_glibc_x86_64_shared
out/soong/.intermediates/frameworks/base/tools/aapt2/aapt2_tests/linux_glibc_x86_64_asan/aapt2_tests
Change-Id: I9a1956d815729de23c7038fb0d498240eb917070
We previously changed AAPT2 to correctly only generate keep rules for
the constructors required to inflate the different views. This cause
projects that did not have keep rules for the other constructors that
were accessed through reflection to have runtime crashes. This change
adds a flag to the link stage (--proguard-minimal-keep-rules) that
allows AAPT2 to only keep the constructors required for layout
inflation. If the flag is not present, then AAPT2 will generate less
specific keep rules than keep all constructors.
Bug: 116201243
Test: aapt2_tests
Change-Id: I8bb5cdf8446518ab153ea988e1243ca9494258c7
Bug: http://b/91353691
After assigning the result of TransformToFieldName to 'result', the
underlying storage is destroyed after the 'if' statement of the function
call. 'result' ends up with garbage if the identifier has a '-'.
ManifestClassGeneratorTest.NormalizePermissionNames is broken for this
reason in 32-bit Windows when using libc++ and 32-bit Linux. ASAN also
reports this failure for both 32-bit and 64-bit linux.
Test: Run test on the cases mentioned above and ensure all of them pass.
Change-Id: I69163c423c1171b7ac7838f2abe06bdf8058df4c
Mmap fails when the length of a file in a zip is 0, so use an
aapt::io::EmptyData when the file length is 0.
Bug: 113094267
Test: manual
Change-Id: I2c1071293bf9b0fe33e8c279c8d78ff906fba5d6
Added the remaining dump commands to aapt2.
aapt2 dump badging [apk]
aapt2 dump permissions [apk]
Bug: 73351292
Test: Diffing aapt and aapt2 output across apps from the Android tree
Change-Id: Idee820db410ad8d777d0d250c2657e7b83112a00
When aapt breaks out splits, it may remove the SDK constraint [if
it's lower than the min sdk]. If that is the only constraint, we
would create a resource split with no constraints. Don't allow
that situation. There must always be _some_ constraint.
Bug: 113115970
Test: atest CtsAppSecurityHostTestCases:SplitTests
Test: aapt2_tests
Change-Id: I424c875677c3be2a3ff5ddd39100b998bd650a4b
Since ResStringPools are encoded using Modified UTF-8, retrieving
strings from the string pool convert the strings to UTF-8 before
returning.
Bug: 114734350
Test: m aapt2_tests
Change-Id: Ib459018186f4c5b40f3f3786425a335ecfb9ed02