From: The Android Open Source Project Date: Fri, 5 Feb 2010 16:09:38 +0000 (-0800) Subject: reconcile main tree with open-source eclair X-Git-Url: https://git.saurik.com/android/aapt.git/commitdiff_plain/d63e1b1bb6a2dbb68b26629726b1d9abc6e548ff?hp=ff15ef2b6c0416aef30d4b180983fe53dabd2a28 reconcile main tree with open-source eclair --- diff --git a/Command.cpp b/Command.cpp index 0ef5d55..8be9db3 100644 --- a/Command.cpp +++ b/Command.cpp @@ -678,7 +678,7 @@ int doDump(Bundle* bundle) REQ_NAVIGATION_ATTR, NULL, 0); int32_t reqFiveWayNav = getIntegerAttribute(tree, REQ_FIVE_WAY_NAV_ATTR, NULL, 0); - printf("uses-configuation:"); + printf("uses-configuration:"); if (reqTouchScreen != 0) { printf(" reqTouchScreen='%d'", reqTouchScreen); } diff --git a/Resource.cpp b/Resource.cpp index fdcada4..20b0bf4 100644 --- a/Resource.cpp +++ b/Resource.cpp @@ -1727,24 +1727,34 @@ writeProguardForAndroidManifest(ProguardKeepSet* keep, const sp& ass depth++; String8 tag(tree.getElementName(&len)); // printf("Depth %d tag %s\n", depth, tag.string()); + bool keepTag = false; if (depth == 1) { if (tag != "manifest") { fprintf(stderr, "ERROR: manifest does not start with tag\n"); return -1; } pkg = getAttribute(tree, NULL, "package", NULL); - } else if (depth == 2 && tag == "application") { - inApplication = true; - } - if (inApplication) { - if (tag == "application" || tag == "activity" || tag == "service" || tag == "receiver" - || tag == "provider") { - String8 name = getAttribute(tree, "http://schemas.android.com/apk/res/android", - "name", &error); - if (error != "") { - fprintf(stderr, "ERROR: %s\n", error.string()); - return -1; - } + } else if (depth == 2) { + if (tag == "application") { + inApplication = true; + keepTag = true; + } else if (tag == "instrumentation") { + keepTag = true; + } + } + if (!keepTag && inApplication && depth == 3) { + if (tag == "activity" || tag == "service" || tag == "receiver" || tag == "provider") { + keepTag = true; + } + } + if (keepTag) { + String8 name = getAttribute(tree, "http://schemas.android.com/apk/res/android", + "name", &error); + if (error != "") { + fprintf(stderr, "ERROR: %s\n", error.string()); + return -1; + } + if (name.length() > 0) { // asdf --> package.asdf // .asdf .a.b --> package.asdf package.a.b // asdf.adsf --> asdf.asdf @@ -1821,10 +1831,16 @@ status_t 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);