]> git.saurik.com Git - android/aapt.git/commitdiff
Revise aapt options for UTF8/16 encoding
authorKenny Root <kroot@google.com>
Fri, 11 Dec 2009 16:15:16 +0000 (08:15 -0800)
committerKenny Root <kroot@google.com>
Sat, 12 Dec 2009 03:06:21 +0000 (19:06 -0800)
Remove option to force UTF-8 encoding which could corrupt packages meant
for systems before API level 7. Added switch to allow encoding for UTF-16
which will allow API 7 and later to encode resources in UTF-16.

Change-Id: I70d0bddb0dfd12dcbd08c95f613dcfe896ae680b

Bundle.h
Main.cpp

index a2c6a12ad9ddb15a61acae70b1dc01dd4cc83608..c53f7f10b8985f891f884bb0ab81a17648fbe7a9 100644 (file)
--- a/Bundle.h
+++ b/Bundle.h
@@ -37,7 +37,7 @@ public:
           mForce(false), mGrayscaleTolerance(0), mMakePackageDirs(false),
           mUpdate(false), mExtending(false),
           mRequireLocalization(false), mPseudolocalize(false),
-          mUTF8(false), mValues(false),
+          mUTF8(false), mEncodingSpecified(false), mValues(false),
           mCompressionMethod(0), mOutputAPKFile(NULL),
           mAssetSourceDir(NULL), mProguardFile(NULL),
           mAndroidManifestFile(NULL), mPublicOutputFile(NULL),
@@ -78,6 +78,8 @@ public:
     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 getValues(void) const { return mValues; }
     void setValues(bool val) { mValues = val; }
     int getCompressionMethod(void) const { return mCompressionMethod; }
@@ -116,7 +118,9 @@ public:
     const char*  getMinSdkVersion() const { return mMinSdkVersion; }
     void setMinSdkVersion(const char*  val) {
         mMinSdkVersion = val;
-        setUTF8(isUTF8Available());
+        if (!mEncodingSpecified) {
+            setUTF8(isUTF8Available());
+        }
     }
     const char*  getTargetSdkVersion() const { return mTargetSdkVersion; }
     void setTargetSdkVersion(const char*  val) { mTargetSdkVersion = val; }
@@ -169,6 +173,7 @@ private:
     bool        mRequireLocalization;
     bool        mPseudolocalize;
     bool        mUTF8;
+    bool        mEncodingSpecified;
     bool        mValues;
     int         mCompressionMethod;
     bool        mJunkPath;
index efbb2f7511c2ab30d3e0e3e0a2c25e688dbba28c..1e6b52ef1c906c3cae8f20a46b6c16fa2dec168d 100644 (file)
--- a/Main.cpp
+++ b/Main.cpp
@@ -59,7 +59,7 @@ void usage(void)
         "        [-0 extension [-0 extension ...]] [-g tolerance] [-j jarfile] \\\n"
         "        [--min-sdk-version VAL] [--target-sdk-version VAL] \\\n"
         "        [--max-sdk-version VAL] [--app-version VAL] \\\n"
-        "        [--app-version-name TEXT] [--custom-package VAL] \\\n"
+        "        [--app-version-name TEXT] [--custom-package VAL] [--utf16] \\\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 ...]] "
@@ -118,12 +118,12 @@ void usage(void)
         "   -P  specify where to output public resource definitions\n"
         "   -S  directory in which to find resources.  Multiple directories will be scanned\n"
         "       and the first match found (left to right) will take precedence.\n"
-        "   -8  Encode string resources in UTF-8.\n"
         "   -0  specifies an additional extension for which such files will not\n"
         "       be stored compressed in the .apk.  An empty string means to not\n"
         "       compress any files at all.\n"
         "   --min-sdk-version\n"
-        "       inserts android:minSdkVersion in to manifest.\n"
+        "       inserts android:minSdkVersion in to manifest.  If the version is 7 or\n"
+        "       higher, the default encoding for resources will be in UTF-8.\n"
         "   --target-sdk-version\n"
         "       inserts android:targetSdkVersion in to manifest.\n"
         "   --max-sdk-version\n"
@@ -135,7 +135,10 @@ void usage(void)
         "   --version-name\n"
         "       inserts android:versionName in to manifest.\n"
         "   --custom-package\n"
-        "       generates R.java into a different package.\n");
+        "       generates R.java into a different package.\n"
+        "   --utf16\n"
+        "       changes default encoding for resources to UTF-16.  Only useful when API\n"
+        "       level is set to 7 or higher where the default encoding is UTF-8.\n");
 }
 
 /*
@@ -373,9 +376,6 @@ int main(int argc, char* const argv[])
                     bundle.setCompressionMethod(ZipEntry::kCompressStored);
                 }
                 break;
-            case '8':
-                bundle.setUTF8(true);
-                break;
             case '-':
                 if (strcmp(cp, "-min-sdk-version") == 0) {
                     argc--;
@@ -433,6 +433,9 @@ int main(int argc, char* const argv[])
                         goto bail;
                     }
                     bundle.setCustomPackage(argv[0]);
+                } else if (strcmp(cp, "-utf16") == 0) {
+                    bundle.setEncodingSpecified(true);
+                    bundle.setUTF8(false);
                 } else {
                     fprintf(stderr, "ERROR: Unknown option '-%s'\n", cp);
                     wantUsage = true;