diff --git a/tools/aapt2/java/ProguardRules.cpp b/tools/aapt2/java/ProguardRules.cpp index 2857d5a2d90e0..d7ebd8c1d33ee 100644 --- a/tools/aapt2/java/ProguardRules.cpp +++ b/tools/aapt2/java/ProguardRules.cpp @@ -365,7 +365,7 @@ void WriteKeepSet(const KeepSet& keep_set, OutputStream* out) { for (const UsageLocation& location : entry.second) { printer.Print("# Referenced at ").Println(location.source.to_string()); } - printer.Print("-keep class ").Print(entry.first).Println(" { (...); }"); + printer.Print("-keep class ").Print(entry.first).Println(" { (); }"); } for (const auto& entry : keep_set.conditional_class_set_) { diff --git a/tools/aapt2/java/ProguardRules_test.cpp b/tools/aapt2/java/ProguardRules_test.cpp index 876c7a76d3f58..bbc6f9f644142 100644 --- a/tools/aapt2/java/ProguardRules_test.cpp +++ b/tools/aapt2/java/ProguardRules_test.cpp @@ -34,6 +34,31 @@ std::string GetKeepSetString(const proguard::KeepSet& set) { return out; } +TEST(ProguardRulesTest, ManifestRuleDefaultConstructorOnly) { + std::unique_ptr manifest = test::BuildXmlDom(R"( + + + + + + + + + )"); + + proguard::KeepSet set; + ASSERT_TRUE(proguard::CollectProguardRulesForManifest(manifest.get(), &set, false)); + + std::string actual = GetKeepSetString(set); + + EXPECT_THAT(actual, HasSubstr("-keep class com.foo.BarBackupAgent { (); }")); + EXPECT_THAT(actual, HasSubstr("-keep class com.foo.BarActivity { (); }")); + EXPECT_THAT(actual, HasSubstr("-keep class com.foo.BarService { (); }")); + 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 { (); }")); +} + TEST(ProguardRulesTest, FragmentNameRuleIsEmitted) { std::unique_ptr context = test::ContextBuilder().Build(); std::unique_ptr layout = test::BuildXmlDom(R"(