summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tools/aapt/Resource.cpp26
-rw-r--r--tools/aapt2/java/ProguardRules.cpp17
2 files changed, 22 insertions, 21 deletions
diff --git a/tools/aapt/Resource.cpp b/tools/aapt/Resource.cpp
index a7878d196c15..b278831ddf4e 100644
--- a/tools/aapt/Resource.cpp
+++ b/tools/aapt/Resource.cpp
@@ -2929,6 +2929,19 @@ writeProguardForAndroidManifest(ProguardKeepSet* keep, const sp<AaptAssets>& ass
if (!keepTag && inApplication && depth == 3) {
if (tag == "activity" || tag == "service" || tag == "receiver" || tag == "provider") {
keepTag = true;
+
+ if (mainDex) {
+ String8 componentProcess = AaptXml::getAttribute(tree,
+ "http://schemas.android.com/apk/res/android", "process", &error);
+ if (error != "") {
+ fprintf(stderr, "ERROR: %s\n", error.string());
+ return -1;
+ }
+
+ const String8& process =
+ componentProcess.length() > 0 ? componentProcess : defaultProcess;
+ keepTag = process.length() > 0 && process.find(":") != 0;
+ }
}
}
if (keepTag) {
@@ -2941,19 +2954,6 @@ writeProguardForAndroidManifest(ProguardKeepSet* keep, const sp<AaptAssets>& ass
keepTag = name.length() > 0;
- if (keepTag && mainDex) {
- String8 componentProcess = AaptXml::getAttribute(tree,
- "http://schemas.android.com/apk/res/android", "process", &error);
- if (error != "") {
- fprintf(stderr, "ERROR: %s\n", error.string());
- return -1;
- }
-
- const String8& process =
- componentProcess.length() > 0 ? componentProcess : defaultProcess;
- keepTag = process.length() > 0 && process.find(":") != 0;
- }
-
if (keepTag) {
addProguardKeepRule(keep, name, pkg.string(),
assFile->getPrintableSource(), tree.getLineNumber());
diff --git a/tools/aapt2/java/ProguardRules.cpp b/tools/aapt2/java/ProguardRules.cpp
index 90616605b7aa..902ec4cf3a0d 100644
--- a/tools/aapt2/java/ProguardRules.cpp
+++ b/tools/aapt2/java/ProguardRules.cpp
@@ -170,16 +170,10 @@ struct ManifestVisitor : public BaseVisitor {
}
}
} else if (node->name == "activity" || node->name == "service" ||
- node->name == "receiver" || node->name == "provider" ||
- node->name == "instrumentation") {
+ node->name == "receiver" || node->name == "provider") {
getName = true;
- }
-
- if (getName) {
- xml::Attribute* attr = node->findAttribute(xml::kSchemaAndroid, "name");
- getName = attr != nullptr;
- if (getName && mMainDexOnly) {
+ if (mMainDexOnly) {
xml::Attribute* componentProcess = node->findAttribute(xml::kSchemaAndroid,
"process");
@@ -187,6 +181,13 @@ struct ManifestVisitor : public BaseVisitor {
: mDefaultProcess;
getName = !process.empty() && process[0] != ':';
}
+ } else if (node-> name == "instrumentation") {
+ getName = true;
+ }
+
+ if (getName) {
+ xml::Attribute* attr = node->findAttribute(xml::kSchemaAndroid, "name");
+ getName = attr != nullptr;
if (getName) {
Maybe<std::string> result = util::getFullyQualifiedClassName(mPackage,