diff options
Diffstat (limited to 'tools/aapt/Resource.cpp')
-rw-r--r-- | tools/aapt/Resource.cpp | 115 |
1 files changed, 73 insertions, 42 deletions
diff --git a/tools/aapt/Resource.cpp b/tools/aapt/Resource.cpp index 0d8db13..5bb2ce1 100644 --- a/tools/aapt/Resource.cpp +++ b/tools/aapt/Resource.cpp @@ -20,15 +20,20 @@ #include <algorithm> +// STATUST: mingw does seem to redefine UNKNOWN_ERROR from our enum value, so a cast is necessary. + #if HAVE_PRINTF_ZD # define ZD "%zd" # define ZD_TYPE ssize_t +# define STATUST(x) x #else # define ZD "%ld" # define ZD_TYPE long +# define STATUST(x) (status_t)x #endif -#define NOISY(x) // x +// Set to true for noisy debug output. +static const bool kIsDebug = false; // Number of threads to use for preprocessing images. static const size_t MAX_THREADS = 4; @@ -129,15 +134,17 @@ public: String8 leaf(group->getLeaf()); mLeafName = String8(leaf); mParams = file->getGroupEntry().toParams(); - NOISY(printf("Dir %s: mcc=%d mnc=%d lang=%c%c cnt=%c%c orient=%d ui=%d density=%d touch=%d key=%d inp=%d nav=%d\n", - group->getPath().string(), mParams.mcc, mParams.mnc, - mParams.language[0] ? mParams.language[0] : '-', - mParams.language[1] ? mParams.language[1] : '-', - mParams.country[0] ? mParams.country[0] : '-', - mParams.country[1] ? mParams.country[1] : '-', - mParams.orientation, mParams.uiMode, - mParams.density, mParams.touchscreen, mParams.keyboard, - mParams.inputFlags, mParams.navigation)); + if (kIsDebug) { + printf("Dir %s: mcc=%d mnc=%d lang=%c%c cnt=%c%c orient=%d ui=%d density=%d touch=%d key=%d inp=%d nav=%d\n", + group->getPath().string(), mParams.mcc, mParams.mnc, + mParams.language[0] ? mParams.language[0] : '-', + mParams.language[1] ? mParams.language[1] : '-', + mParams.country[0] ? mParams.country[0] : '-', + mParams.country[1] ? mParams.country[1] : '-', + mParams.orientation, mParams.uiMode, + mParams.density, mParams.touchscreen, mParams.keyboard, + mParams.inputFlags, mParams.navigation); + } mPath = "res"; mPath.appendPath(file->getGroupEntry().toDirName(mResType)); mPath.appendPath(leaf); @@ -148,7 +155,9 @@ public: return UNKNOWN_ERROR; } - NOISY(printf("file name=%s\n", mBaseName.string())); + if (kIsDebug) { + printf("file name=%s\n", mBaseName.string()); + } return NO_ERROR; } @@ -321,7 +330,7 @@ static status_t makeFileResources(Bundle* bundle, const sp<AaptAssets>& assets, assets->addResource(it.getLeafName(), resPath, it.getFile(), type8); } - return hasErrors ? UNKNOWN_ERROR : NO_ERROR; + return hasErrors ? STATUST(UNKNOWN_ERROR) : NO_ERROR; } class PreProcessImageWorkUnit : public WorkQueue::WorkUnit { @@ -371,7 +380,7 @@ static status_t preProcessImages(const Bundle* bundle, const sp<AaptAssets>& ass hasErrors = true; } } - return (hasErrors || (res < NO_ERROR)) ? UNKNOWN_ERROR : NO_ERROR; + return (hasErrors || (res < NO_ERROR)) ? STATUST(UNKNOWN_ERROR) : NO_ERROR; } static void collect_files(const sp<AaptDir>& dir, @@ -396,27 +405,35 @@ static void collect_files(const sp<AaptDir>& dir, if (index < 0) { sp<ResourceTypeSet> set = new ResourceTypeSet(); - NOISY(printf("Creating new resource type set for leaf %s with group %s (%p)\n", - leafName.string(), group->getPath().string(), group.get())); + if (kIsDebug) { + printf("Creating new resource type set for leaf %s with group %s (%p)\n", + leafName.string(), group->getPath().string(), group.get()); + } set->add(leafName, group); resources->add(resType, set); } else { sp<ResourceTypeSet> set = resources->valueAt(index); index = set->indexOfKey(leafName); if (index < 0) { - NOISY(printf("Adding to resource type set for leaf %s group %s (%p)\n", - leafName.string(), group->getPath().string(), group.get())); + if (kIsDebug) { + printf("Adding to resource type set for leaf %s group %s (%p)\n", + leafName.string(), group->getPath().string(), group.get()); + } set->add(leafName, group); } else { sp<AaptGroup> existingGroup = set->valueAt(index); - NOISY(printf("Extending to resource type set for leaf %s group %s (%p)\n", - leafName.string(), group->getPath().string(), group.get())); + if (kIsDebug) { + printf("Extending to resource type set for leaf %s group %s (%p)\n", + leafName.string(), group->getPath().string(), group.get()); + } for (size_t j=0; j<files.size(); j++) { - NOISY(printf("Adding file %s in group %s resType %s\n", - files.valueAt(j)->getSourceFile().string(), - files.keyAt(j).toDirName(String8()).string(), - resType.string())); - status_t err = existingGroup->addFile(files.valueAt(j)); + if (kIsDebug) { + printf("Adding file %s in group %s resType %s\n", + files.valueAt(j)->getSourceFile().string(), + files.keyAt(j).toDirName(String8()).string(), + resType.string()); + } + existingGroup->addFile(files.valueAt(j)); } } } @@ -431,12 +448,16 @@ static void collect_files(const sp<AaptAssets>& ass, for (int i=0; i<N; i++) { sp<AaptDir> d = dirs.itemAt(i); - NOISY(printf("Collecting dir #%d %p: %s, leaf %s\n", i, d.get(), d->getPath().string(), - d->getLeaf().string())); + if (kIsDebug) { + printf("Collecting dir #%d %p: %s, leaf %s\n", i, d.get(), d->getPath().string(), + d->getLeaf().string()); + } collect_files(d, resources); // don't try to include the res dir - NOISY(printf("Removing dir leaf %s\n", d->getLeaf().string())); + if (kIsDebug) { + printf("Removing dir leaf %s\n", d->getLeaf().string()); + } ass->removeDir(d->getLeaf()); } } @@ -531,7 +552,7 @@ static int validateAttr(const String8& path, const ResTable& table, String8(parser.getElementName(&len)).string(), attr); return ATTR_LEADING_SPACES; } - if (str[len-1] == ' ') { + if (len != 0 && str[len-1] == ' ') { fprintf(stderr, "%s:%d: Tag <%s> attribute %s can not end with a space.\n", path.string(), parser.getLineNumber(), String8(parser.getElementName(&len)).string(), attr); @@ -694,9 +715,11 @@ bool addTagAttribute(const sp<XMLNode>& node, const char* ns8, XMLNode::attribute_entry* existingEntry = node->editAttribute(ns, attr); if (existingEntry != NULL) { if (replaceExisting) { - NOISY(printf("Info: AndroidManifest.xml already defines %s (in %s);" - " overwriting existing value from manifest.\n", - String8(attr).string(), String8(ns).string())); + if (kIsDebug) { + printf("Info: AndroidManifest.xml already defines %s (in %s);" + " overwriting existing value from manifest.\n", + String8(attr).string(), String8(ns).string()); + } existingEntry->string = String16(value); return true; } @@ -755,7 +778,9 @@ static void fullyQualifyClassName(const String8& package, sp<XMLNode> node, } else { className += name; } - NOISY(printf("Qualifying class '%s' to '%s'", name.string(), className.string())); + if (kIsDebug) { + printf("Qualifying class '%s' to '%s'", name.string(), className.string()); + } attr->string.setTo(String16(className)); } } @@ -859,7 +884,10 @@ status_t massageManifest(Bundle* bundle, sp<XMLNode> root) } String8 origPackage(attr->string); attr->string.setTo(String16(manifestPackageNameOverride)); - NOISY(printf("Overriding package '%s' to be '%s'\n", origPackage.string(), manifestPackageNameOverride)); + if (kIsDebug) { + printf("Overriding package '%s' to be '%s'\n", origPackage.string(), + manifestPackageNameOverride); + } // Make class names fully qualified sp<XMLNode> application = root->getChildElement(String16(), String16("application")); @@ -1116,8 +1144,9 @@ status_t buildResources(Bundle* bundle, const sp<AaptAssets>& assets, sp<ApkBuil return err; } - NOISY(printf("Creating resources for package %s\n", - assets->getPackage().string())); + if (kIsDebug) { + printf("Creating resources for package %s\n", assets->getPackage().string()); + } ResourceTable::PackageType packageType = ResourceTable::App; if (bundle->getBuildSharedLibrary()) { @@ -1134,7 +1163,9 @@ status_t buildResources(Bundle* bundle, const sp<AaptAssets>& assets, sp<ApkBuil return err; } - NOISY(printf("Found %d included resource packages\n", (int)table.size())); + if (kIsDebug) { + printf("Found %d included resource packages\n", (int)table.size()); + } // Standard flags for compiled XML and optional UTF-8 encoding int xmlFlags = XML_COMPILE_STANDARD_RESOURCE; @@ -2039,7 +2070,7 @@ static String16 getAttributeComment(const sp<AaptAssets>& assets, static status_t writeResourceLoadedCallbackForLayoutClasses( FILE* fp, const sp<AaptAssets>& assets, - const sp<AaptSymbols>& symbols, int indent, bool includePrivate) + const sp<AaptSymbols>& symbols, int indent, bool /* includePrivate */) { String16 attr16("attr"); String16 package16(assets->getPackage()); @@ -2343,7 +2374,7 @@ static status_t writeLayoutClasses( indent--; fprintf(fp, "%s};\n", getIndentSpace(indent)); - return hasErrors ? UNKNOWN_ERROR : NO_ERROR; + return hasErrors ? STATUST(UNKNOWN_ERROR) : NO_ERROR; } static status_t writeTextLayoutClasses( @@ -2429,7 +2460,7 @@ static status_t writeTextLayoutClasses( package16.string(), package16.size(), &typeSpecFlags); //printf("%s:%s/%s: 0x%08x\n", String8(package16).string(), // String8(attr16).string(), String8(name16).string(), typeSpecFlags); - const bool pub = (typeSpecFlags&ResTable_typeSpec::SPEC_PUBLIC) != 0; + //const bool pub = (typeSpecFlags&ResTable_typeSpec::SPEC_PUBLIC) != 0; fprintf(fp, "int styleable %s_%s %d\n", @@ -2439,7 +2470,7 @@ static status_t writeTextLayoutClasses( } } - return hasErrors ? UNKNOWN_ERROR : NO_ERROR; + return hasErrors ? STATUST(UNKNOWN_ERROR) : NO_ERROR; } static status_t writeSymbolClass( @@ -2770,7 +2801,7 @@ addProguardKeepRule(ProguardKeepSet* keep, const String8& inClassName, void addProguardKeepMethodRule(ProguardKeepSet* keep, const String8& memberName, - const char* pkg, const String8& srcName, int line) + const char* /* pkg */, const String8& srcName, int line) { String8 rule("-keepclassmembers class * { *** "); rule += memberName; @@ -3098,7 +3129,7 @@ status_t writePathsToFile(const sp<FilePathStore>& files, FILE* fp) } status_t -writeDependencyPreReqs(Bundle* bundle, const sp<AaptAssets>& assets, FILE* fp, bool includeRaw) +writeDependencyPreReqs(Bundle* /* bundle */, const sp<AaptAssets>& assets, FILE* fp, bool includeRaw) { status_t deps = -1; deps += writePathsToFile(assets->getFullResPaths(), fp); |