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

Commit ed531b37 authored by Kenny Root's avatar Kenny Root Committed by Android (Google) Code Review
Browse files

Merge "Fix minSdkVersion scanning to not throw warnings"

parents b50ebe3a 1741cd49
Loading
Loading
Loading
Loading
+37 −27
Original line number Diff line number Diff line
@@ -37,12 +37,12 @@ public:
          mForce(false), mGrayscaleTolerance(0), mMakePackageDirs(false),
          mUpdate(false), mExtending(false),
          mRequireLocalization(false), mPseudolocalize(false),
          mUTF8(false), mEncodingSpecified(false), mValues(false),
          mWantUTF16(false), mValues(false),
          mCompressionMethod(0), mOutputAPKFile(NULL),
          mManifestPackageNameOverride(NULL), mInstrumentationPackageNameOverride(NULL),
          mAutoAddOverlay(false), mAssetSourceDir(NULL), mProguardFile(NULL),
          mAndroidManifestFile(NULL), mPublicOutputFile(NULL),
          mRClassDir(NULL), mResourceIntermediatesDir(NULL),
          mRClassDir(NULL), mResourceIntermediatesDir(NULL), mManifestMinSdkVersion(NULL),
          mMinSdkVersion(NULL), mTargetSdkVersion(NULL), mMaxSdkVersion(NULL),
          mVersionCode(NULL), mVersionName(NULL), mCustomPackage(NULL),
          mArgc(0), mArgv(NULL)
@@ -77,10 +77,8 @@ public:
    void setRequireLocalization(bool val) { mRequireLocalization = val; }
    bool getPseudolocalize(void) const { return mPseudolocalize; }
    void setPseudolocalize(bool val) { mPseudolocalize = val; }
    bool getUTF8(void) const { return mUTF8; }
    void setUTF8(bool val) { mUTF8 = val; }
    bool getEncodingSpecified(void) const { return mEncodingSpecified; }
    void setEncodingSpecified(bool val) { mEncodingSpecified = val; }
    bool getWantUTF16(void) const { return mWantUTF16; }
    void setWantUTF16(bool val) { mWantUTF16 = val; }
    bool getValues(void) const { return mValues; }
    void setValues(bool val) { mValues = val; }
    int getCompressionMethod(void) const { return mCompressionMethod; }
@@ -122,13 +120,10 @@ public:
    const android::Vector<const char*>& getNoCompressExtensions() const { return mNoCompressExtensions; }
    void addNoCompressExtension(const char* ext) { mNoCompressExtensions.add(ext); }

    const char*  getManifestMinSdkVersion() const { return mManifestMinSdkVersion; }
    void setManifestMinSdkVersion(const char*  val) { mManifestMinSdkVersion = val; }
    const char*  getMinSdkVersion() const { return mMinSdkVersion; }
    void setMinSdkVersion(const char*  val) {
        mMinSdkVersion = val;
        if (!mEncodingSpecified) {
            setUTF8(isUTF8Available());
        }
    }
    void setMinSdkVersion(const char*  val) { mMinSdkVersion = val; }
    const char*  getTargetSdkVersion() const { return mTargetSdkVersion; }
    void setTargetSdkVersion(const char*  val) { mTargetSdkVersion = val; }
    const char*  getMaxSdkVersion() const { return mMaxSdkVersion; }
@@ -167,6 +162,34 @@ public:
    void setPackageCount(int val) { mPackageCount = val; }
#endif

    /* UTF-8 is only available on APIs 7 or above or
     * SDK levels that have code names.
     */
    bool isUTF8Available() {
        /* If the application specifies a minSdkVersion in the manifest
         * then use that. Otherwise, check what the user specified on
         * the command line. If neither, it's not available since
         * the minimum SDK version is assumed to be 1.
         */
        const char *minVer;
        if (mManifestMinSdkVersion != NULL) {
            minVer = mManifestMinSdkVersion;
        } else if (mMinSdkVersion != NULL) {
            minVer = mMinSdkVersion;
        } else {
            return false;
        }

        char *end;
        int minSdkNum = (int)strtol(minVer, &end, 0);
        if (*end == '\0') {
            if (minSdkNum < 7) {
                return false;
            }
        }
        return true;
    }

private:
    /* commands & modifiers */
    Command     mCmd;
@@ -179,8 +202,7 @@ private:
    bool        mExtending;
    bool        mRequireLocalization;
    bool        mPseudolocalize;
    bool        mUTF8;
    bool        mEncodingSpecified;
    bool        mWantUTF16;
    bool        mValues;
    int         mCompressionMethod;
    bool        mJunkPath;
@@ -200,6 +222,7 @@ private:
    android::Vector<const char*> mNoCompressExtensions;
    android::Vector<const char*> mResourceSourceDirs;

    const char* mManifestMinSdkVersion;
    const char* mMinSdkVersion;
    const char* mTargetSdkVersion;
    const char* mMaxSdkVersion;
@@ -216,19 +239,6 @@ private:
    int         mPackageCount;
#endif

    /* UTF-8 is only available on APIs 7 or above or
     * SDK levels that have code names.
     */
    bool isUTF8Available() {
        char *end;
        int minSdkNum = (int)strtol(mMinSdkVersion, &end, 0);
        if (*end == '\0') {
            if (minSdkNum < 7) {
                return false;
            }
        }
        return true;
    }
};

#endif // __BUNDLE_H
+1 −2
Original line number Diff line number Diff line
@@ -446,8 +446,7 @@ int main(int argc, char* const argv[])
                    }
                    bundle.setCustomPackage(argv[0]);
                } else if (strcmp(cp, "-utf16") == 0) {
                    bundle.setEncodingSpecified(true);
                    bundle.setUTF8(false);
                    bundle.setWantUTF16(true);
                } else if (strcmp(cp, "-rename-manifest-package") == 0) {
                    argc--;
                    argv++;
+8 −2
Original line number Diff line number Diff line
@@ -226,7 +226,7 @@ static status_t parsePackage(Bundle* bundle, const sp<AaptAssets>& assets,
                if (minSdkIndex >= 0) {
                    const uint16_t* minSdk16 = block.getAttributeStringValue(minSdkIndex, &len);
                    const char* minSdk8 = strdup(String8(minSdk16).string());
                    bundle->setMinSdkVersion(minSdk8);
                    bundle->setManifestMinSdkVersion(minSdk8);
                }
            }
        }
@@ -768,7 +768,13 @@ status_t buildResources(Bundle* bundle, const sp<AaptAssets>& assets)

    // Standard flags for compiled XML and optional UTF-8 encoding
    int xmlFlags = XML_COMPILE_STANDARD_RESOURCE;
    if (bundle->getUTF8()) {

    /* Only enable UTF-8 if the caller of aapt didn't specifically
     * request UTF-16 encoding and the parameters of this package
     * allow UTF-8 to be used.
     */
    if (!bundle->getWantUTF16()
            && bundle->isUTF8Available()) {
        xmlFlags |= XML_COMPILE_UTF8;
    }

+5 −3
Original line number Diff line number Diff line
@@ -2527,9 +2527,11 @@ status_t ResourceTable::flatten(Bundle* bundle, const sp<AaptFile>& dest)
    const size_t N = mOrderedPackages.size();
    size_t pi;

    bool useUTF8 = !bundle->getWantUTF16() && bundle->isUTF8Available();

    // Iterate through all data, collecting all values (strings,
    // references, etc).
    StringPool valueStrings = StringPool(false, bundle->getUTF8());
    StringPool valueStrings = StringPool(false, useUTF8);
    for (pi=0; pi<N; pi++) {
        sp<Package> p = mOrderedPackages.itemAt(pi);
        if (p->getTypes().size() == 0) {
@@ -2537,8 +2539,8 @@ status_t ResourceTable::flatten(Bundle* bundle, const sp<AaptFile>& dest)
            continue;
        }

        StringPool typeStrings = StringPool(false, bundle->getUTF8());
        StringPool keyStrings = StringPool(false, bundle->getUTF8());
        StringPool typeStrings = StringPool(false, useUTF8);
        StringPool keyStrings = StringPool(false, useUTF8);

        const size_t N = p->getOrderedTypes().size();
        for (size_t ti=0; ti<N; ti++) {