diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/aapt/Bundle.h | 6 | ||||
-rw-r--r-- | tools/aapt/Main.cpp | 14 | ||||
-rw-r--r-- | tools/aapt/ResourceTable.cpp | 12 |
3 files changed, 28 insertions, 4 deletions
diff --git a/tools/aapt/Bundle.h b/tools/aapt/Bundle.h index 2d1060b..7ea277a 100644 --- a/tools/aapt/Bundle.h +++ b/tools/aapt/Bundle.h @@ -1,5 +1,6 @@ // // Copyright 2006 The Android Open Source Project +// This code has been modified. Portions copyright (C) 2010, T-Mobile USA, Inc. // // State bundle. Used to pass around stuff like command-line args. // @@ -36,7 +37,7 @@ public: Bundle(void) : mCmd(kCommandUnknown), mVerbose(false), mAndroidList(false), mForce(false), mGrayscaleTolerance(0), mMakePackageDirs(false), - mUpdate(false), mExtending(false), + mUpdate(false), mExtending(false), mExtendedPackageId(0), mRequireLocalization(false), mPseudolocalize(false), mWantUTF16(false), mValues(false), mCompressionMethod(0), mOutputAPKFile(NULL), @@ -78,6 +79,8 @@ public: void setUpdate(bool val) { mUpdate = val; } bool getExtending(void) const { return mExtending; } void setExtending(bool val) { mExtending = val; } + int getExtendedPackageId(void) const { return mExtendedPackageId; } + void setExtendedPackageId(int val) { mExtendedPackageId = val; } bool getRequireLocalization(void) const { return mRequireLocalization; } void setRequireLocalization(bool val) { mRequireLocalization = val; } bool getPseudolocalize(void) const { return mPseudolocalize; } @@ -226,6 +229,7 @@ private: bool mMakePackageDirs; bool mUpdate; bool mExtending; + int mExtendedPackageId; bool mRequireLocalization; bool mPseudolocalize; bool mWantUTF16; diff --git a/tools/aapt/Main.cpp b/tools/aapt/Main.cpp index 50c828d..77d5dd6 100644 --- a/tools/aapt/Main.cpp +++ b/tools/aapt/Main.cpp @@ -1,5 +1,6 @@ // // Copyright 2006 The Android Open Source Project +// This code has been modified. Portions copyright (C) 2010, T-Mobile USA, Inc. // // Android Asset Packaging Tool main entry point. // @@ -14,6 +15,7 @@ #include <stdlib.h> #include <getopt.h> #include <assert.h> +#include <ctype.h> using namespace android; @@ -55,7 +57,7 @@ void usage(void) " xmltree Print the compiled xmls in the given assets.\n" " xmlstrings Print the strings of the given compiled xml assets.\n\n", gProgName); fprintf(stderr, - " %s p[ackage] [-d][-f][-m][-u][-v][-x][-z][-M AndroidManifest.xml] \\\n" + " %s p[ackage] [-d][-f][-m][-u][-v][-x[ extending-resource-id]][-z][-M AndroidManifest.xml] \\\n" " [-0 extension [-0 extension ...]] [-g tolerance] [-j jarfile] \\\n" " [--debug-mode] [--min-sdk-version VAL] [--target-sdk-version VAL] \\\n" " [--app-version VAL] [--app-version-name TEXT] [--custom-package VAL] \\\n" @@ -116,7 +118,7 @@ void usage(void) #endif " -u update existing packages (add new, replace older, remove deleted files)\n" " -v verbose output\n" - " -x create extending (non-application) resource IDs\n" + " -x either create or assign (if specified) extending (non-application) resource IDs\n" " -z require localization of resource attributes marked with\n" " localization=\"suggested\"\n" " -A additional directory in which to find raw asset files\n" @@ -305,6 +307,14 @@ int main(int argc, char* const argv[]) break; case 'x': bundle.setExtending(true); + argc--; + argv++; + if (!argc || !isdigit(argv[0][0])) { + argc++; + argv--; + } else { + bundle.setExtendedPackageId(atoi(argv[0])); + } break; case 'z': bundle.setRequireLocalization(true); diff --git a/tools/aapt/ResourceTable.cpp b/tools/aapt/ResourceTable.cpp index fdb39ca..df117db 100644 --- a/tools/aapt/ResourceTable.cpp +++ b/tools/aapt/ResourceTable.cpp @@ -1,5 +1,6 @@ // // Copyright 2006 The Android Open Source Project +// This code has been modified. Portions copyright (C) 2010, T-Mobile USA, Inc. // // Build resource files from raw assets. // @@ -3620,7 +3621,16 @@ sp<ResourceTable::Package> ResourceTable::getPackage(const String16& package) mHaveAppPackage = true; p = new Package(package, 127); } else { - p = new Package(package, mNextPackageId); + int extendedPackageId = mBundle->getExtendedPackageId(); + if (extendedPackageId != 0) { + if ((uint32_t)extendedPackageId < mNextPackageId) { + fprintf(stderr, "Package ID %d already in use!\n", mNextPackageId); + return NULL; + } + p = new Package(package, extendedPackageId); + } else { + p = new Package(package, mNextPackageId); + } } //printf("*** NEW PACKAGE: \"%s\" id=%d\n", // String8(package).string(), p->getAssignedId()); |