Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 41e567f7 authored by Ficus Kirkpatrick's avatar Ficus Kirkpatrick
Browse files

Add --max-res-version flag to aapt.

aapt will ignore any versioned resource directories over the
specified version (if used).  e.g. --max-res-version=6 will
cause layout-land-v7 to be ignored.

Merged from gingerbread.

Change-Id: I71b889540380cb10bafb40f72582d3af785ae33a
parent 74521b17
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -1830,6 +1830,16 @@ ssize_t AaptAssets::slurpResourceTree(Bundle* bundle, const String8& srcDir)
            continue;
        }

        if (bundle->getMaxResVersion() != NULL && group.version.length() != 0) {
            int maxResInt = atoi(bundle->getMaxResVersion());
            const char *verString = group.version.string();
            int dirVersionInt = atoi(verString + 1); // skip 'v' in version name
            if (dirVersionInt > maxResInt) {
              fprintf(stderr, "max res %d, skipping %s\n", maxResInt, entry->d_name);
              continue;
            }
        }

        FileType type = getFileType(subdirName.string());

        if (type == kFileTypeDirectory) {
+4 −0
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ public:
          mRClassDir(NULL), mResourceIntermediatesDir(NULL), mManifestMinSdkVersion(NULL),
          mMinSdkVersion(NULL), mTargetSdkVersion(NULL), mMaxSdkVersion(NULL),
          mVersionCode(NULL), mVersionName(NULL), mCustomPackage(NULL),
          mMaxResVersion(NULL),
          mArgc(0), mArgv(NULL)
        {}
    ~Bundle(void) {}
@@ -134,6 +135,8 @@ public:
    void setVersionName(const char* val) { mVersionName = val; }
    const char* getCustomPackage() const { return mCustomPackage; }
    void setCustomPackage(const char* val) { mCustomPackage = val; }
    const char* getMaxResVersion() const { return mMaxResVersion; }
    void setMaxResVersion(const char * val) { mMaxResVersion = val; }

    /*
     * Set and get the file specification.
@@ -230,6 +233,7 @@ private:
    const char* mVersionCode;
    const char* mVersionName;
    const char* mCustomPackage;
    const char* mMaxResVersion;

    /* file specification */
    int         mArgc;
+12 −0
Original line number Diff line number Diff line
@@ -62,6 +62,7 @@ void usage(void)
        "        [--rename-manifest-package PACKAGE] \\\n"
        "        [--rename-instrumentation-target-package PACKAGE] \\\n"
        "        [--utf16] [--auto-add-overlay] \\\n"
        "        [--max-res-version VAL] \\\n"
        "        [-I base-package [-I base-package ...]] \\\n"
        "        [-A asset-source-dir]  [-G class-list-file] [-P public-definitions-file] \\\n"
        "        [-S resource-sources [-S resource-sources ...]] "
@@ -128,6 +129,8 @@ void usage(void)
        "       higher, the default encoding for resources will be in UTF-8.\n"
        "   --target-sdk-version\n"
        "       inserts android:targetSdkVersion in to manifest.\n"
        "   --max-res-version\n"
        "       ignores versioned resource directories above the given value.\n"
        "   --values\n"
        "       when used with \"dump resources\" also includes resource values.\n"
        "   --version-code\n"
@@ -416,6 +419,15 @@ int main(int argc, char* const argv[])
                        goto bail;
                    }
                    bundle.setMaxSdkVersion(argv[0]);
                } else if (strcmp(cp, "-max-res-version") == 0) {
                    argc--;
                    argv++;
                    if (!argc) {
                        fprintf(stderr, "ERROR: No argument supplied for '--max-res-version' option\n");
                        wantUsage = true;
                        goto bail;
                    }
                    bundle.setMaxResVersion(argv[0]);
                } else if (strcmp(cp, "-version-code") == 0) {
                    argc--;
                    argv++;