diff --git a/tools/aapt2/java/ProguardRules.cpp b/tools/aapt2/java/ProguardRules.cpp index 52e168ed47aae..05ba8f05ec675 100644 --- a/tools/aapt2/java/ProguardRules.cpp +++ b/tools/aapt2/java/ProguardRules.cpp @@ -281,6 +281,15 @@ class ManifestVisitor : public BaseVisitor { AddClass(node->line_number, result.value(), ""); } } + + attr = node->FindAttribute(xml::kSchemaAndroid, "zygotePreloadName"); + if (attr) { + Maybe result = util::GetFullyQualifiedClassName(package_, attr->value); + if (result) { + AddClass(node->line_number, result.value(), ""); + } + } + if (main_dex_only_) { xml::Attribute* default_process = node->FindAttribute(xml::kSchemaAndroid, "process"); if (default_process) { diff --git a/tools/aapt2/java/ProguardRules_test.cpp b/tools/aapt2/java/ProguardRules_test.cpp index da24907417fa6..559b07af3e80b 100644 --- a/tools/aapt2/java/ProguardRules_test.cpp +++ b/tools/aapt2/java/ProguardRules_test.cpp @@ -42,6 +42,7 @@ TEST(ProguardRulesTest, ManifestRuleDefaultConstructorOnly) { android:appComponentFactory="com.foo.BarAppComponentFactory" android:backupAgent="com.foo.BarBackupAgent" android:name="com.foo.BarApplication" + android:zygotePreloadName="com.foo.BarZygotePreload" > @@ -63,6 +64,7 @@ TEST(ProguardRulesTest, ManifestRuleDefaultConstructorOnly) { EXPECT_THAT(actual, HasSubstr("-keep class com.foo.BarReceiver { (); }")); EXPECT_THAT(actual, HasSubstr("-keep class com.foo.BarProvider { (); }")); EXPECT_THAT(actual, HasSubstr("-keep class com.foo.BarInstrumentation { (); }")); + EXPECT_THAT(actual, HasSubstr("-keep class com.foo.BarZygotePreload { (); }")); actual = GetKeepSetString(set, /** minimal_rules */ true); EXPECT_THAT(actual, HasSubstr("-keep class com.foo.BarAppComponentFactory { (); }")); @@ -73,6 +75,7 @@ TEST(ProguardRulesTest, ManifestRuleDefaultConstructorOnly) { EXPECT_THAT(actual, HasSubstr("-keep class com.foo.BarReceiver { (); }")); EXPECT_THAT(actual, HasSubstr("-keep class com.foo.BarProvider { (); }")); EXPECT_THAT(actual, HasSubstr("-keep class com.foo.BarInstrumentation { (); }")); + EXPECT_THAT(actual, HasSubstr("-keep class com.foo.BarZygotePreload { (); }")); } TEST(ProguardRulesTest, FragmentNameRuleIsEmitted) {