summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Makoto Onuki <omakoto@google.com> 2022-01-12 16:03:50 -0800
committer Makoto Onuki <omakoto@google.com> 2022-01-12 16:03:50 -0800
commit22a931eaab49b865f8c0ed8763d8930679f52544 (patch)
treea33ee64a97e890491e39a65230ba64ca792a0d88
parent306e4e79a357dbde74944b24928d44b8208a740e (diff)
AAPT2: Emit @keep for sub-process app classes
Test: atest aapt2_tests Bug: 197264681 Change-Id: I1f6cabfd0f3ce4c3c661d9dc132629d8c83048d9
-rw-r--r--tools/aapt2/java/ProguardRules.cpp2
-rw-r--r--tools/aapt2/java/ProguardRules_test.cpp4
2 files changed, 5 insertions, 1 deletions
diff --git a/tools/aapt2/java/ProguardRules.cpp b/tools/aapt2/java/ProguardRules.cpp
index b939f354e89f..4a2d0aea82d5 100644
--- a/tools/aapt2/java/ProguardRules.cpp
+++ b/tools/aapt2/java/ProguardRules.cpp
@@ -311,7 +311,7 @@ class ManifestVisitor : public BaseVisitor {
component_process ? component_process->value : default_process_;
get_name = !process.empty() && process[0] != ':';
}
- } else if (node->name == "instrumentation") {
+ } else if (node->name == "instrumentation" || node->name == "process") {
get_name = true;
}
diff --git a/tools/aapt2/java/ProguardRules_test.cpp b/tools/aapt2/java/ProguardRules_test.cpp
index e1040666e410..466b7d97da00 100644
--- a/tools/aapt2/java/ProguardRules_test.cpp
+++ b/tools/aapt2/java/ProguardRules_test.cpp
@@ -44,6 +44,9 @@ TEST(ProguardRulesTest, ManifestRuleDefaultConstructorOnly) {
android:name="com.foo.BarApplication"
android:zygotePreloadName="com.foo.BarZygotePreload"
>
+ <processes>
+ <process android:process=":sub" android:name="com.foo.BazApplication" />
+ </processes>
<activity android:name="com.foo.BarActivity"/>
<service android:name="com.foo.BarService"/>
<receiver android:name="com.foo.BarReceiver"/>
@@ -59,6 +62,7 @@ TEST(ProguardRulesTest, ManifestRuleDefaultConstructorOnly) {
EXPECT_THAT(actual, HasSubstr("-keep class com.foo.BarAppComponentFactory { <init>(); }"));
EXPECT_THAT(actual, HasSubstr("-keep class com.foo.BarBackupAgent { <init>(); }"));
EXPECT_THAT(actual, HasSubstr("-keep class com.foo.BarApplication { <init>(); }"));
+ EXPECT_THAT(actual, HasSubstr("-keep class com.foo.BazApplication { <init>(); }"));
EXPECT_THAT(actual, HasSubstr("-keep class com.foo.BarActivity { <init>(); }"));
EXPECT_THAT(actual, HasSubstr("-keep class com.foo.BarService { <init>(); }"));
EXPECT_THAT(actual, HasSubstr("-keep class com.foo.BarReceiver { <init>(); }"));