diff options
author | Xavier Ducrohet <xav@android.com> | 2010-02-04 18:45:31 -0800 |
---|---|---|
committer | Xavier Ducrohet <xav@android.com> | 2010-02-04 18:53:14 -0800 |
commit | 99080c7d9ad9e5ccfec70dd10e4c24468a960c45 (patch) | |
tree | 5ebcc1e38b01a53bb07617bd1b151d1c8fa5f1b5 /tools | |
parent | 732ebb1bc3d7760fd424b84e0235ea9946100102 (diff) | |
download | frameworks_base-99080c7d9ad9e5ccfec70dd10e4c24468a960c45.zip frameworks_base-99080c7d9ad9e5ccfec70dd10e4c24468a960c45.tar.gz frameworks_base-99080c7d9ad9e5ccfec70dd10e4c24468a960c45.tar.bz2 |
Add --auto-add-overlay option to aapt.
This option allows resources only present in overlays to be
added automatically instead of being declared through <add-resource>
Change-Id: Iff782311056f6a045193e57d204f7d3413e11b26
Diffstat (limited to 'tools')
-rw-r--r-- | tools/aapt/Bundle.h | 5 | ||||
-rw-r--r-- | tools/aapt/Main.cpp | 5 | ||||
-rw-r--r-- | tools/aapt/ResourceTable.cpp | 9 | ||||
-rw-r--r-- | tools/aapt/ResourceTable.h | 3 |
4 files changed, 16 insertions, 6 deletions
diff --git a/tools/aapt/Bundle.h b/tools/aapt/Bundle.h index cbb5203..558b587 100644 --- a/tools/aapt/Bundle.h +++ b/tools/aapt/Bundle.h @@ -39,7 +39,7 @@ public: mRequireLocalization(false), mPseudolocalize(false), mUTF8(false), mEncodingSpecified(false), mValues(false), mCompressionMethod(0), mOutputAPKFile(NULL), mManifestPackageNameOverride(NULL), - mAssetSourceDir(NULL), mProguardFile(NULL), + mAutoAddOverlay(false), mAssetSourceDir(NULL), mProguardFile(NULL), mAndroidManifestFile(NULL), mPublicOutputFile(NULL), mRClassDir(NULL), mResourceIntermediatesDir(NULL), mMinSdkVersion(NULL), mTargetSdkVersion(NULL), mMaxSdkVersion(NULL), @@ -90,6 +90,8 @@ public: void setOutputAPKFile(const char* val) { mOutputAPKFile = val; } const char* getManifestPackageNameOverride() const { return mManifestPackageNameOverride; } void setManifestPackageNameOverride(const char * val) { mManifestPackageNameOverride = val; } + bool getAutoAddOverlay() { return mAutoAddOverlay; } + void setAutoAddOverlay(bool val) { mAutoAddOverlay = val; } /* * Input options. @@ -181,6 +183,7 @@ private: bool mJunkPath; const char* mOutputAPKFile; const char* mManifestPackageNameOverride; + bool mAutoAddOverlay; const char* mAssetSourceDir; const char* mProguardFile; const char* mAndroidManifestFile; diff --git a/tools/aapt/Main.cpp b/tools/aapt/Main.cpp index 6675ac2..6d0a351 100644 --- a/tools/aapt/Main.cpp +++ b/tools/aapt/Main.cpp @@ -60,6 +60,7 @@ void usage(void) " [--min-sdk-version VAL] [--target-sdk-version VAL] \\\n" " [--max-sdk-version VAL] [--app-version VAL] \\\n" " [--app-version-name TEXT] [--custom-package VAL] [--utf16] \\\n" + " [--auto-add-overlay] \\\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 ...]] " @@ -136,6 +137,8 @@ void usage(void) " inserts android:versionName in to manifest.\n" " --custom-package\n" " generates R.java into a different package.\n" + " --auto-add-overlay\n" + " Automatically add resources that are only in overlays.\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"); @@ -445,6 +448,8 @@ int main(int argc, char* const argv[]) goto bail; } bundle.setManifestPackageNameOverride(argv[0]); + } else if (strcmp(cp, "-auto-add-overlay") == 0) { + bundle.setAutoAddOverlay(true); } else { fprintf(stderr, "ERROR: Unknown option '-%s'\n", cp); wantUsage = true; diff --git a/tools/aapt/ResourceTable.cpp b/tools/aapt/ResourceTable.cpp index a9cbd11..b682702 100644 --- a/tools/aapt/ResourceTable.cpp +++ b/tools/aapt/ResourceTable.cpp @@ -1591,7 +1591,7 @@ status_t ResourceTable::startBag(const SourcePos& sourcePos, sourcePos.file.striing(), sourcePos.line, String8(type).string()); } #endif - if (overlay && !hasBagOrEntry(package, type, name)) { + if (overlay && !mBundle->getAutoAddOverlay() && !hasBagOrEntry(package, type, name)) { bool canAdd = false; sp<Package> p = mPackages.valueFor(package); if (p != NULL) { @@ -3279,12 +3279,13 @@ sp<ResourceTable::Entry> ResourceTable::Type::getEntry(const String16& entry, const SourcePos& sourcePos, const ResTable_config* config, bool doSetIndex, - bool overlay) + bool overlay, + bool autoAddOverlay) { int pos = -1; sp<ConfigList> c = mConfigs.valueFor(entry); if (c == NULL) { - if (overlay == true && mCanAddEntries.indexOf(entry) < 0) { + if (overlay && !autoAddOverlay && mCanAddEntries.indexOf(entry) < 0) { sourcePos.error("Resource at %s appears in overlay but not" " in the base package; use <add-resource> to add.\n", String8(entry).string()); @@ -3596,7 +3597,7 @@ sp<ResourceTable::Entry> ResourceTable::getEntry(const String16& package, if (t == NULL) { return NULL; } - return t->getEntry(name, sourcePos, config, doSetIndex, overlay); + return t->getEntry(name, sourcePos, config, doSetIndex, overlay, mBundle->getAutoAddOverlay()); } sp<const ResourceTable::Entry> ResourceTable::getEntry(uint32_t resID, diff --git a/tools/aapt/ResourceTable.h b/tools/aapt/ResourceTable.h index cfa75a71..60d0901 100644 --- a/tools/aapt/ResourceTable.h +++ b/tools/aapt/ResourceTable.h @@ -425,7 +425,8 @@ public: const SourcePos& pos, const ResTable_config* config = NULL, bool doSetIndex = false, - bool overlay = false); + bool overlay = false, + bool autoAddOverlay = false); const SourcePos& getFirstPublicSourcePos() const { return *mFirstPublicSourcePos; } |