diff options
| -rw-r--r-- | tools/aapt/Resource.cpp | 26 | ||||
| -rw-r--r-- | tools/aapt2/java/ProguardRules.cpp | 17 |
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, |