From 07dfd2d8642f8a3630ca6429f740865a0c0bfdf7 Mon Sep 17 00:00:00 2001 From: Adam Lesinski Date: Wed, 28 Oct 2015 15:44:27 -0700 Subject: Implement AAPT Bundle format AAPT will scan XML files looking for the XML tag. The SINGLE child element of the tag is extracted into its own top level resource. It is given a generated name. The parent element of is then given the resource attribute that was assigned to the `name' attribute. The value is set to a reference to the generated resource. Bug:22627686 Change-Id: I8575fc4f739011402662fbf6b3db96df0012f598 --- tools/aapt/Resource.cpp | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'tools/aapt/Resource.cpp') diff --git a/tools/aapt/Resource.cpp b/tools/aapt/Resource.cpp index e22e76de66c2..fb0fe38da1ff 100644 --- a/tools/aapt/Resource.cpp +++ b/tools/aapt/Resource.cpp @@ -1537,12 +1537,20 @@ status_t buildResources(Bundle* bundle, const sp& assets, sp& workQueue = table.getWorkQueue(); while (!workQueue.empty()) { CompileResourceWorkItem& workItem = workQueue.front(); - err = compileXmlFile(bundle, assets, workItem.resourceName, workItem.file, &table, xmlFlags); + int xmlCompilationFlags = xmlFlags | XML_COMPILE_PARSE_VALUES + | XML_COMPILE_ASSIGN_ATTRIBUTE_IDS; + if (!workItem.needsCompiling) { + xmlCompilationFlags &= ~XML_COMPILE_ASSIGN_ATTRIBUTE_IDS; + xmlCompilationFlags &= ~XML_COMPILE_PARSE_VALUES; + } + err = compileXmlFile(bundle, assets, workItem.resourceName, workItem.xmlRoot, + workItem.file, &table, xmlCompilationFlags); + if (err == NO_ERROR) { assets->addResource(workItem.resPath.getPathLeaf(), - workItem.resPath, - workItem.file, - workItem.file->getResourceType()); + workItem.resPath, + workItem.file, + workItem.file->getResourceType()); } else { hasErrors = true; } @@ -1737,9 +1745,7 @@ status_t buildResources(Bundle* bundle, const sp& assets, spgetGroupEntry(), manifestFile->getResourceType()); err = compileXmlFile(bundle, assets, String16(), manifestFile, - outManifestFile, &table, - XML_COMPILE_ASSIGN_ATTRIBUTE_IDS - | XML_COMPILE_STRIP_WHITESPACE | XML_COMPILE_STRIP_RAW_VALUES); + outManifestFile, &table, XML_COMPILE_STANDARD_RESOURCE & ~XML_COMPILE_STRIP_COMMENTS); if (err < NO_ERROR) { return err; } -- cgit v1.2.3-59-g8ed1b