From: Ying Wang Date: Wed, 27 Jan 2010 23:53:20 +0000 (-0800) Subject: am 6efe03b1: am 6f9e2c64: Merge "Find layout classes in all "layout-*" dirs." into... X-Git-Url: https://git.saurik.com/android/aapt.git/commitdiff_plain/af949fdd618113755b85860f88c0736aa1ed09e7?ds=inline;hp=-c am 6efe03b1: am 6f9e2c64: Merge "Find layout classes in all "layout-*" dirs." into eclair Merge commit '6efe03b19e0734361b262f9a0be4d225088d7f9e' * commit '6efe03b19e0734361b262f9a0be4d225088d7f9e': Find layout classes in all "layout-*" dirs. --- af949fdd618113755b85860f88c0736aa1ed09e7 diff --combined Resource.cpp index c530dd4,20b0bf4..d53c472 --- a/Resource.cpp +++ b/Resource.cpp @@@ -171,8 -171,7 +171,8 @@@ static sp getResourceFile(con NULL, String8()); } -static status_t parsePackage(const sp& assets, const sp& grp) +static status_t parsePackage(Bundle* bundle, const sp& assets, + const sp& grp) { if (grp->getFiles().size() != 1) { fprintf(stderr, "warning: Multiple AndroidManifest.xml files found, using %s\n", @@@ -216,22 -215,6 +216,22 @@@ assets->setPackage(String8(block.getAttributeStringValue(nameIndex, &len))); + String16 uses_sdk16("uses-sdk"); + while ((code=block.next()) != ResXMLTree::END_DOCUMENT + && code != ResXMLTree::BAD_DOCUMENT) { + if (code == ResXMLTree::START_TAG) { + if (strcmp16(block.getElementName(&len), uses_sdk16.string()) == 0) { + ssize_t minSdkIndex = block.indexOfAttribute("android", + "minSdkVersion"); + if (minSdkIndex >= 0) { + String8 minSdkString = String8( + block.getAttributeStringValue(minSdkIndex, &len)); + bundle->setMinSdkVersion(minSdkString.string()); + } + } + } + } + return NO_ERROR; } @@@ -614,7 -597,7 +614,7 @@@ status_t buildResources(Bundle* bundle return UNKNOWN_ERROR; } - status_t err = parsePackage(assets, androidManifestFile); + status_t err = parsePackage(bundle, assets, androidManifestFile); if (err != NO_ERROR) { return err; } @@@ -630,12 -613,6 +630,12 @@@ NOISY(printf("Found %d included resource packages\n", (int)table.size())); + // Standard flags for compiled XML and optional UTF-8 encoding + int xmlFlags = XML_COMPILE_STANDARD_RESOURCE; + if (bundle->getUTF8()) { + xmlFlags |= XML_COMPILE_UTF8; + } + // -------------------------------------------------------------- // First, gather all resource information. // -------------------------------------------------------------- @@@ -786,7 -763,7 +786,7 @@@ ResourceDirIterator it(layouts, String8("layout")); while ((err=it.next()) == NO_ERROR) { String8 src = it.getFile()->getPrintableSource(); - err = compileXmlFile(assets, it.getFile(), &table); + err = compileXmlFile(assets, it.getFile(), &table, xmlFlags); if (err == NO_ERROR) { ResXMLTree block; block.setTo(it.getFile()->getData(), it.getFile()->getSize(), true); @@@ -805,7 -782,7 +805,7 @@@ if (anims != NULL) { ResourceDirIterator it(anims, String8("anim")); while ((err=it.next()) == NO_ERROR) { - err = compileXmlFile(assets, it.getFile(), &table); + err = compileXmlFile(assets, it.getFile(), &table, xmlFlags); if (err != NO_ERROR) { hasErrors = true; } @@@ -820,7 -797,7 +820,7 @@@ if (xmls != NULL) { ResourceDirIterator it(xmls, String8("xml")); while ((err=it.next()) == NO_ERROR) { - err = compileXmlFile(assets, it.getFile(), &table); + err = compileXmlFile(assets, it.getFile(), &table, xmlFlags); if (err != NO_ERROR) { hasErrors = true; } @@@ -842,7 -819,7 +842,7 @@@ if (colors != NULL) { ResourceDirIterator it(colors, String8("color")); while ((err=it.next()) == NO_ERROR) { - err = compileXmlFile(assets, it.getFile(), &table); + err = compileXmlFile(assets, it.getFile(), &table, xmlFlags); if (err != NO_ERROR) { hasErrors = true; } @@@ -858,7 -835,7 +858,7 @@@ ResourceDirIterator it(menus, String8("menu")); while ((err=it.next()) == NO_ERROR) { String8 src = it.getFile()->getPrintableSource(); - err = compileXmlFile(assets, it.getFile(), &table); + err = compileXmlFile(assets, it.getFile(), &table, xmlFlags); if (err != NO_ERROR) { hasErrors = true; } @@@ -1854,10 -1831,16 +1854,16 @@@ status_ writeProguardForLayouts(ProguardKeepSet* keep, const sp& assets) { status_t err; - sp layout = assets->resDir(String8("layout")); + const Vector >& dirs = assets->resDirs(); + const size_t K = dirs.size(); + for (size_t k=0; k& d = dirs.itemAt(k); + const String8& dirName = d->getLeaf(); + if ((dirName != String8("layout")) && (strncmp(dirName.string(), "layout-", 7) != 0)) { + continue; + } - if (layout != NULL) { - const KeyedVector > groups = layout->getFiles(); + const KeyedVector > groups = d->getFiles(); const size_t N = groups.size(); for (size_t i=0; i& group = groups.valueAt(i);