diff options
author | Martijn Coenen <maco@google.com> | 2019-03-06 15:06:17 +0100 |
---|---|---|
committer | Martijn Coenen <maco@google.com> | 2019-03-06 15:06:17 +0100 |
commit | 6c83e0c5c9985a99e2960a9b80eb443e175243c2 (patch) | |
tree | 829ee9e3fb9f089b1362e6db53f795294f455e62 /tools/aapt2/java | |
parent | 101ac58981754e5e1b35ea5cf88f41fd14768891 (diff) |
Make sure Proguard keeps zygote preload class.
Bug: 127262679
Test: atest ProguardRulesTest
Change-Id: Ib082404e08d98b25fcecbf680afb4af37fe2786b
Diffstat (limited to 'tools/aapt2/java')
-rw-r--r-- | tools/aapt2/java/ProguardRules.cpp | 9 | ||||
-rw-r--r-- | tools/aapt2/java/ProguardRules_test.cpp | 3 |
2 files changed, 12 insertions, 0 deletions
diff --git a/tools/aapt2/java/ProguardRules.cpp b/tools/aapt2/java/ProguardRules.cpp index 52e168ed47aa..05ba8f05ec67 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<std::string> 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 da24907417fa..559b07af3e80 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" > <activity android:name="com.foo.BarActivity"/> <service android:name="com.foo.BarService"/> @@ -63,6 +64,7 @@ TEST(ProguardRulesTest, ManifestRuleDefaultConstructorOnly) { EXPECT_THAT(actual, HasSubstr("-keep class com.foo.BarReceiver { <init>(); }")); EXPECT_THAT(actual, HasSubstr("-keep class com.foo.BarProvider { <init>(); }")); EXPECT_THAT(actual, HasSubstr("-keep class com.foo.BarInstrumentation { <init>(); }")); + EXPECT_THAT(actual, HasSubstr("-keep class com.foo.BarZygotePreload { <init>(); }")); actual = GetKeepSetString(set, /** minimal_rules */ true); EXPECT_THAT(actual, HasSubstr("-keep class com.foo.BarAppComponentFactory { <init>(); }")); @@ -73,6 +75,7 @@ TEST(ProguardRulesTest, ManifestRuleDefaultConstructorOnly) { EXPECT_THAT(actual, HasSubstr("-keep class com.foo.BarReceiver { <init>(); }")); EXPECT_THAT(actual, HasSubstr("-keep class com.foo.BarProvider { <init>(); }")); EXPECT_THAT(actual, HasSubstr("-keep class com.foo.BarInstrumentation { <init>(); }")); + EXPECT_THAT(actual, HasSubstr("-keep class com.foo.BarZygotePreload { <init>(); }")); } TEST(ProguardRulesTest, FragmentNameRuleIsEmitted) { |