diff options
Diffstat (limited to 'tools/aapt2/link/ManifestFixer.cpp')
-rw-r--r-- | tools/aapt2/link/ManifestFixer.cpp | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/tools/aapt2/link/ManifestFixer.cpp b/tools/aapt2/link/ManifestFixer.cpp index bcfce663db00..c813a446b8db 100644 --- a/tools/aapt2/link/ManifestFixer.cpp +++ b/tools/aapt2/link/ManifestFixer.cpp @@ -263,6 +263,16 @@ bool ManifestFixer::BuildRules(xml::XmlActionExecutor* executor, } } + if (options_.rename_overlay_target_package) { + if (!util::IsJavaPackageName(options_.rename_overlay_target_package.value())) { + diag->Error(DiagMessage() + << "invalid overlay target package override '" + << options_.rename_overlay_target_package.value() + << "'"); + return false; + } + } + // Common <intent-filter> actions. xml::XmlNodeAction intent_filter_action; intent_filter_action["action"].Action(RequiredNameIsNotEmpty); @@ -373,7 +383,17 @@ bool ManifestFixer::BuildRules(xml::XmlActionExecutor* executor, manifest_action["attribution"]; manifest_action["attribution"]["inherit-from"]; manifest_action["original-package"]; - manifest_action["overlay"]; + manifest_action["overlay"].Action([&](xml::Element* el) -> bool { + if (!options_.rename_overlay_target_package) { + return true; + } + + if (xml::Attribute* attr = + el->FindAttribute(xml::kSchemaAndroid, "targetPackage")) { + attr->value = options_.rename_overlay_target_package.value(); + } + return true; + }); manifest_action["protected-broadcast"]; manifest_action["adopt-permissions"]; manifest_action["uses-permission"]; |