diff options
author | 2018-12-11 13:52:17 +0000 | |
---|---|---|
committer | 2018-12-12 13:17:26 +0000 | |
commit | cd2d8e2021e1d91765f61357d9585bd6969f93bb (patch) | |
tree | b458969b8f6c188d3b5946e6e4aa5178c6cb2655 /tools/aapt2/dump | |
parent | 754fbf92a11e54e3ee437469801265ed7beaa5db (diff) |
Make aapt2 dump badging print overlay info
This adds the contents of the manifest <overlay> tag to the
output of aapt2 dump badging.
Sample output:
overlay: targetPackage='android' priority='1' isStatic='false'
Bug: 119938467
Test: aapt2 dump badging \
$ANDROID_PRODUCT_OUT/vendor/overlay/framework-res__auto_generated_rro.apk
Change-Id: Ie9d904e6206ff8cf092744e630ee6f496672673c
Diffstat (limited to 'tools/aapt2/dump')
-rw-r--r-- | tools/aapt2/dump/DumpManifest.cpp | 49 |
1 files changed, 47 insertions, 2 deletions
diff --git a/tools/aapt2/dump/DumpManifest.cpp b/tools/aapt2/dump/DumpManifest.cpp index 11a4074cd3cd..e17fb4783a45 100644 --- a/tools/aapt2/dump/DumpManifest.cpp +++ b/tools/aapt2/dump/DumpManifest.cpp @@ -43,8 +43,10 @@ enum { PERMISSION_ATTR = 0x01010006, EXPORTED_ATTR = 0x01010010, GRANT_URI_PERMISSIONS_ATTR = 0x0101001b, + PRIORITY_ATTR = 0x0101001c, RESOURCE_ATTR = 0x01010025, DEBUGGABLE_ATTR = 0x0101000f, + TARGET_PACKAGE_ATTR = 0x01010021, VALUE_ATTR = 0x01010024, VERSION_CODE_ATTR = 0x0101021b, VERSION_NAME_ATTR = 0x0101021c, @@ -77,8 +79,11 @@ enum { ISGAME_ATTR = 0x10103f4, VERSION_ATTR = 0x01010519, CERT_DIGEST_ATTR = 0x01010548, - REQUIRED_FEATURE_ATTR = 0x1010557, - REQUIRED_NOT_FEATURE_ATTR = 0x1010558, + REQUIRED_FEATURE_ATTR = 0x01010557, + REQUIRED_NOT_FEATURE_ATTR = 0x01010558, + IS_STATIC_ATTR = 0x0101055a, + REQUIRED_SYSTEM_PROPERTY_NAME_ATTR = 0x01010565, + REQUIRED_SYSTEM_PROPERTY_VALUE_ATTR = 0x01010566, COMPILE_SDK_VERSION_ATTR = 0x01010572, COMPILE_SDK_VERSION_CODENAME_ATTR = 0x01010573, VERSION_MAJOR_ATTR = 0x01010577, @@ -1586,6 +1591,44 @@ class OriginalPackage : public ManifestExtractor::Element { } }; + +/** Represents <overlay> elements. **/ +class Overlay : public ManifestExtractor::Element { + public: + Overlay() = default; + const std::string* target_package = nullptr; + int priority; + bool is_static; + const std::string* required_property_name = nullptr; + const std::string* required_property_value = nullptr; + + void Extract(xml::Element* element) override { + target_package = GetAttributeString(FindAttribute(element, TARGET_PACKAGE_ATTR)); + priority = GetAttributeIntegerDefault(FindAttribute(element, PRIORITY_ATTR), 0); + is_static = GetAttributeIntegerDefault(FindAttribute(element, IS_STATIC_ATTR), false) != 0; + required_property_name = GetAttributeString( + FindAttribute(element, REQUIRED_SYSTEM_PROPERTY_NAME_ATTR)); + required_property_value = GetAttributeString( + FindAttribute(element, REQUIRED_SYSTEM_PROPERTY_VALUE_ATTR)); + } + + void Print(text::Printer* printer) override { + printer->Print(StringPrintf("overlay:")); + if (target_package) { + printer->Print(StringPrintf(" targetPackage='%s'", target_package->c_str())); + } + printer->Print(StringPrintf(" priority='%d'", priority)); + printer->Print(StringPrintf(" isStatic='%s'", is_static ? "true" : "false")); + if (required_property_name) { + printer->Print(StringPrintf(" requiredPropertyName='%s'", required_property_name->c_str())); + } + if (required_property_value) { + printer->Print(StringPrintf(" requiredPropertyValue='%s'", required_property_value->c_str())); + } + printer->Print("\n"); + } +}; + /** * Represents <package-verifier> elements. **/ class PackageVerifier : public ManifestExtractor::Element { public: @@ -2166,6 +2209,7 @@ T* ElementCast(ManifestExtractor::Element* element) { {"meta-data", std::is_base_of<MetaData, T>::value}, {"manifest", std::is_base_of<Manifest, T>::value}, {"original-package", std::is_base_of<OriginalPackage, T>::value}, + {"overlay", std::is_base_of<Overlay, T>::value}, {"package-verifier", std::is_base_of<PackageVerifier, T>::value}, {"permission", std::is_base_of<Permission, T>::value}, {"provider", std::is_base_of<Provider, T>::value}, @@ -2215,6 +2259,7 @@ std::unique_ptr<ManifestExtractor::Element> ManifestExtractor::Element::Inflate( {"manifest", &CreateType<Manifest>}, {"meta-data", &CreateType<MetaData>}, {"original-package", &CreateType<OriginalPackage>}, + {"overlay", &CreateType<Overlay>}, {"package-verifier", &CreateType<PackageVerifier>}, {"permission", &CreateType<Permission>}, {"provider", &CreateType<Provider>}, |