Mark resource-only splits as hasCode=false.
PackageManagerService now skips dexopt for split APKs that don't
declare they have code. Also surface more detailed error messages
in logs.
Bug: 14975160
Change-Id: Ie6078dba724815020cee59b7fc52317e88ca097a
diff --git a/tools/aapt/Resource.cpp b/tools/aapt/Resource.cpp
index 963c796..4f1d15e 100644
--- a/tools/aapt/Resource.cpp
+++ b/tools/aapt/Resource.cpp
@@ -931,6 +931,13 @@
// Build an empty <application> tag (required).
sp<XMLNode> app = XMLNode::newElement(filename, String16(), String16("application"));
+
+ // Add the 'hasCode' attribute which is never true for resource splits.
+ if (!addTagAttribute(app, RESOURCES_ANDROID_NAMESPACE, "hasCode",
+ "false", true, true)) {
+ return UNKNOWN_ERROR;
+ }
+
manifest->addChild(app);
root->addChild(manifest);