From e4bd16028442e36b13fe6fc119393eae5840508d Mon Sep 17 00:00:00 2001 From: Jake Wharton Date: Tue, 12 Jun 2018 09:39:14 -0400 Subject: Add rule emissions for appComponentFactory This attribute was added in API 28 and is reflectively instantiated from a zero-argument constructor. Test: make aapt2_tests Change-Id: Ie9de0764165c6fe6c6fcda6cc38b0cc633f03bbd --- tools/aapt2/java/ProguardRules.cpp | 7 +++++++ tools/aapt2/java/ProguardRules_test.cpp | 2 ++ 2 files changed, 9 insertions(+) (limited to 'tools/aapt2/java') diff --git a/tools/aapt2/java/ProguardRules.cpp b/tools/aapt2/java/ProguardRules.cpp index d03cdb3d8518..92487f4e6854 100644 --- a/tools/aapt2/java/ProguardRules.cpp +++ b/tools/aapt2/java/ProguardRules.cpp @@ -259,6 +259,13 @@ class ManifestVisitor : public BaseVisitor { AddClass(node->line_number, result.value()); } } + attr = node->FindAttribute(xml::kSchemaAndroid, "appComponentFactory"); + 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 6e0df50bd9c4..aeb9eb6e91c4 100644 --- a/tools/aapt2/java/ProguardRules_test.cpp +++ b/tools/aapt2/java/ProguardRules_test.cpp @@ -38,6 +38,7 @@ TEST(ProguardRulesTest, ManifestRuleDefaultConstructorOnly) { std::unique_ptr manifest = test::BuildXmlDom(R"( @@ -54,6 +55,7 @@ TEST(ProguardRulesTest, ManifestRuleDefaultConstructorOnly) { std::string actual = GetKeepSetString(set); + EXPECT_THAT(actual, HasSubstr("-keep class com.foo.BarAppComponentFactory { (); }")); EXPECT_THAT(actual, HasSubstr("-keep class com.foo.BarBackupAgent { (); }")); EXPECT_THAT(actual, HasSubstr("-keep class com.foo.BarApplication { (); }")); EXPECT_THAT(actual, HasSubstr("-keep class com.foo.BarActivity { (); }")); -- cgit v1.2.3-59-g8ed1b