From: Xavier Ducrohet Date: Wed, 26 Sep 2012 22:12:13 +0000 (-0700) Subject: am f7243dcc: Add --error-on-failed-insert option to aapt. do not merge. X-Git-Url: https://git.saurik.com/android/aapt.git/commitdiff_plain/bb8ba3b6505ad112374ceed1fd0e29f06a19242d?hp=a1cc551d359ff0c35ffe148d4b3855eb19a24070 am f7243dcc: Add --error-on-failed-insert option to aapt. do not merge. * commit 'f7243dcc616bc9bd84fa519356babb15d6f17e7d': Add --error-on-failed-insert option to aapt. do not merge. --- diff --git a/AaptAssets.cpp b/AaptAssets.cpp index f2fa3f5..46b8a27 100644 --- a/AaptAssets.cpp +++ b/AaptAssets.cpp @@ -58,7 +58,7 @@ static bool validateFileName(const char* fileName) // The default to use if no other ignore pattern is defined. const char * const gDefaultIgnoreAssets = - "!.svn:!.git:.*:_*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~"; + "!.svn:!.git:!.ds_store:!*.scc:.*:_*:!CVS:!thumbs.db:!picasa.ini:!*~"; // The ignore pattern that can be passed via --ignore-assets in Main.cpp const char * gUserIgnoreAssets = NULL; diff --git a/Android.mk b/Android.mk index d0a81dc..d9b0681 100644 --- a/Android.mk +++ b/Android.mk @@ -29,8 +29,11 @@ LOCAL_SRC_FILES := \ LOCAL_CFLAGS += -Wno-format-y2k +ifeq (darwin,$(HOST_OS)) +LOCAL_CFLAGS += -D_DARWIN_UNLIMITED_STREAMS +endif + -LOCAL_C_INCLUDES += external/expat/lib LOCAL_C_INCLUDES += external/libpng LOCAL_C_INCLUDES += external/zlib LOCAL_C_INCLUDES += build/libs/host/include diff --git a/Bundle.h b/Bundle.h index 8e0be1c..fde3bd6 100644 --- a/Bundle.h +++ b/Bundle.h @@ -51,9 +51,8 @@ public: mUpdate(false), mExtending(false), mRequireLocalization(false), mPseudolocalize(false), mWantUTF16(false), mValues(false), - mCompressionMethod(0), mOutputAPKFile(NULL), + mCompressionMethod(0), mJunkPath(false), mOutputAPKFile(NULL), mManifestPackageNameOverride(NULL), mInstrumentationPackageNameOverride(NULL), - mIsOverlayPackage(false), mAutoAddOverlay(false), mGenDependencies(false), mAssetSourceDir(NULL), mCrunchedOutputDir(NULL), mProguardFile(NULL), @@ -108,8 +107,6 @@ public: void setManifestPackageNameOverride(const char * val) { mManifestPackageNameOverride = val; } const char* getInstrumentationPackageNameOverride() const { return mInstrumentationPackageNameOverride; } void setInstrumentationPackageNameOverride(const char * val) { mInstrumentationPackageNameOverride = val; } - bool getIsOverlayPackage() const { return mIsOverlayPackage; } - void setIsOverlayPackage(bool val) { mIsOverlayPackage = val; } bool getAutoAddOverlay() { return mAutoAddOverlay; } void setAutoAddOverlay(bool val) { mAutoAddOverlay = val; } bool getGenDependencies() { return mGenDependencies; } @@ -255,7 +252,6 @@ private: const char* mOutputAPKFile; const char* mManifestPackageNameOverride; const char* mInstrumentationPackageNameOverride; - bool mIsOverlayPackage; bool mAutoAddOverlay; bool mGenDependencies; const char* mAssetSourceDir; diff --git a/Main.cpp b/Main.cpp index d48394a..f398de0 100644 --- a/Main.cpp +++ b/Main.cpp @@ -69,7 +69,6 @@ void usage(void) " [-F apk-file] [-J R-file-dir] \\\n" " [--product product1,product2,...] \\\n" " [-c CONFIGS] [--preferred-configurations CONFIGS] \\\n" - " [-o] \\\n" " [raw-files-dir [raw-files-dir] ...] \\\n" " [--output-text-symbols DIR]\n" "\n" @@ -111,7 +110,6 @@ void usage(void) " -j specify a jar or zip file containing classes to include\n" " -k junk path of file(s) added\n" " -m make package directories under location specified by -J\n" - " -o create overlay package (ie only resources; expects in manifest)\n" #if 0 " -p pseudolocalize the default configuration\n" #endif @@ -305,9 +303,6 @@ int main(int argc, char* const argv[]) case 'm': bundle.setMakePackageDirs(true); break; - case 'o': - bundle.setIsOverlayPackage(true); - break; #if 0 case 'p': bundle.setPseudolocalize(true); diff --git a/ResourceTable.cpp b/ResourceTable.cpp index 0195727..d98fe65 100644 --- a/ResourceTable.cpp +++ b/ResourceTable.cpp @@ -2749,6 +2749,12 @@ status_t ResourceTable::flatten(Bundle* bundle, const sp& dest) const bool filterable = (typeName != mipmap16); const size_t N = t != NULL ? t->getOrderedConfigs().size() : 0; + + // Until a non-NO_ENTRY value has been written for a resource, + // that resource is invalid; validResources[i] represents + // the item at t->getOrderedConfigs().itemAt(i). + Vector validResources; + validResources.insertAt(false, 0, N); // First write the typeSpec chunk, containing information about // each resource entry in this type. @@ -2885,6 +2891,7 @@ status_t ResourceTable::flatten(Bundle* bundle, const sp& dest) if (amt < 0) { return amt; } + validResources.editItemAt(ei) = true; } else { index[ei] = htodl(ResTable_type::NO_ENTRY); } @@ -2895,6 +2902,14 @@ status_t ResourceTable::flatten(Bundle* bundle, const sp& dest) (((uint8_t*)data->editData()) + typeStart); tHeader->header.size = htodl(data->getSize()-typeStart); } + + for (size_t i = 0; i < N; ++i) { + if (!validResources[i]) { + sp c = t->getOrderedConfigs().itemAt(i); + fprintf(stderr, "warning: no entries written for %s/%s\n", + String8(typeName).string(), String8(c->getName()).string()); + } + } } // Fill in the rest of the package information. @@ -3723,9 +3738,7 @@ sp ResourceTable::getPackage(const String16& package) { sp p = mPackages.valueFor(package); if (p == NULL) { - if (mBundle->getIsOverlayPackage()) { - p = new Package(package, 0x00); - } else if (mIsAppPackage) { + if (mIsAppPackage) { if (mHaveAppPackage) { fprintf(stderr, "Adding multiple application package resources; only one is allowed.\n" "Use -x to create extended resources.\n"); diff --git a/StringPool.h b/StringPool.h index d501008..16050b2 100644 --- a/StringPool.h +++ b/StringPool.h @@ -21,7 +21,7 @@ #include #include -#include +#include using namespace android; diff --git a/XMLNode.cpp b/XMLNode.cpp index 0dba950..dcbe7db 100644 --- a/XMLNode.cpp +++ b/XMLNode.cpp @@ -511,7 +511,8 @@ void printXMLBlock(ResXMLTree* block) namespaces.pop(); } else if (code == ResXMLTree::TEXT) { size_t len; - printf("%sC: \"%s\"\n", prefix.string(), String8(block->getText(&len)).string()); + printf("%sC: \"%s\"\n", prefix.string(), + ResTable::normalizeForOutput(String8(block->getText(&len)).string()).string()); } }