AAPT2: Emit @keep for sub-process app classes

Test: atest aapt2_tests
Bug: 197264681
Change-Id: I1f6cabfd0f3ce4c3c661d9dc132629d8c83048d9
This commit is contained in:
Makoto Onuki
2022-01-12 16:03:50 -08:00
parent 306e4e79a3
commit 22a931eaab
2 changed files with 5 additions and 1 deletions

View File

@@ -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;
}

View File

@@ -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>(); }"));