]> git.saurik.com Git - android/aapt.git/commitdiff
am 6efe03b1: am 6f9e2c64: Merge "Find layout classes in all "layout-*" dirs." into...
authorYing Wang <wangying@google.com>
Wed, 27 Jan 2010 23:53:20 +0000 (15:53 -0800)
committerAndroid Git Automerger <android-git-automerger@android.com>
Wed, 27 Jan 2010 23:53:20 +0000 (15:53 -0800)
Merge commit '6efe03b19e0734361b262f9a0be4d225088d7f9e'

* commit '6efe03b19e0734361b262f9a0be4d225088d7f9e':
  Find layout classes in all "layout-*" dirs.

1  2 
Resource.cpp

diff --combined Resource.cpp
index c530dd4cc93c23ce759f9d3427f9f9c6371d596e,20b0bf4c3ad47c2b97521913c967e74cb4f3cdcb..d53c472baac5501de938440781955889d5710c04
@@@ -171,8 -171,7 +171,8 @@@ static sp<AaptFile> getResourceFile(con
                              NULL, String8());
  }
  
 -static status_t parsePackage(const sp<AaptAssets>& assets, const sp<AaptGroup>& grp)
 +static status_t parsePackage(Bundle* bundle, const sp<AaptAssets>& assets,
 +    const sp<AaptGroup>& grp)
  {
      if (grp->getFiles().size() != 1) {
          fprintf(stderr, "warning: Multiple AndroidManifest.xml files found, using %s\n",
  
      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;
      }
  
      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.
      // --------------------------------------------------------------
          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);
      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;
              }
      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;
              }
      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;
              }
          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<AaptAssets>& assets)
  {
      status_t err;
-     sp<AaptDir> layout = assets->resDir(String8("layout"));
+     const Vector<sp<AaptDir> >& dirs = assets->resDirs();
+     const size_t K = dirs.size();
+     for (size_t k=0; k<K; k++) {
+         const sp<AaptDir>& 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<String8,sp<AaptGroup> > groups = layout->getFiles();
+         const KeyedVector<String8,sp<AaptGroup> > groups = d->getFiles();
          const size_t N = groups.size();
          for (size_t i=0; i<N; i++) {
              const sp<AaptGroup>& group = groups.valueAt(i);