DO NOT MERGE. cherrypick from I3653f67ee321eac37cb8a6d228b1ef6d104ff0be

Add single crunch command to aapt. do not merge.

Previously the crunch command would work on a full res folder
and output a full res folder (with only the drawables). This
was only used in the SDK.

The incremental logic is moved to the SDK build system so we
change the crunch command (or rather add a new one) to only
crunch a single file.

(cherry picked from commit b1f6ad82dd)

Change-Id: Ifa0dceed93708658f950322f36c13b6ebe7ab0f3
This commit is contained in:
Xavier Ducrohet
2012-12-21 09:54:02 -08:00
committed by Scott Main
parent 3c8ecd30b4
commit 42fb3abd4b
4 changed files with 47 additions and 8 deletions

View File

@@ -38,6 +38,7 @@ typedef enum Command {
kCommandRemove,
kCommandPackage,
kCommandCrunch,
kCommandSingleCrunch,
} Command;
/*
@@ -62,6 +63,7 @@ public:
mVersionCode(NULL), mVersionName(NULL), mCustomPackage(NULL), mExtraPackages(NULL),
mMaxResVersion(NULL), mDebugMode(false), mNonConstantId(false), mProduct(NULL),
mUseCrunchCache(false), mErrorOnFailedInsert(false), mOutputTextSymbols(NULL),
mSingleCrunchInputFile(NULL), mSingleCrunchOutputFile(NULL),
mArgc(0), mArgv(NULL)
{}
~Bundle(void) {}
@@ -176,6 +178,10 @@ public:
bool getUseCrunchCache() const { return mUseCrunchCache; }
const char* getOutputTextSymbols() const { return mOutputTextSymbols; }
void setOutputTextSymbols(const char* val) { mOutputTextSymbols = val; }
const char* getSingleCrunchInputFile() const { return mSingleCrunchInputFile; }
void setSingleCrunchInputFile(const char* val) { mSingleCrunchInputFile = val; }
const char* getSingleCrunchOutputFile() const { return mSingleCrunchOutputFile; }
void setSingleCrunchOutputFile(const char* val) { mSingleCrunchOutputFile = val; }
/*
* Set and get the file specification.
@@ -283,6 +289,8 @@ private:
bool mUseCrunchCache;
bool mErrorOnFailedInsert;
const char* mOutputTextSymbols;
const char* mSingleCrunchInputFile;
const char* mSingleCrunchOutputFile;
/* file specification */
int mArgc;

View File

@@ -7,6 +7,7 @@
#include "Bundle.h"
#include "ResourceFilter.h"
#include "ResourceTable.h"
#include "Images.h"
#include "XMLNode.h"
#include <utils/Log.h>

View File

@@ -85,7 +85,11 @@ void usage(void)
" Add specified files to Zip-compatible archive.\n\n", gProgName);
fprintf(stderr,
" %s c[runch] [-v] -S resource-sources ... -C output-folder ...\n"
" Do PNG preprocessing and store the results in output folder.\n\n", gProgName);
" Do PNG preprocessing on one or several resource folders\n"
" and store the results in the output folder.\n\n", gProgName);
fprintf(stderr,
" %s s[ingleCrunch] [-v] -i input-file -o outputfile\n"
" Do PNG preprocessing on a single file.\n\n", gProgName);
fprintf(stderr,
" %s v[ersion]\n"
" Print program version.\n\n", gProgName);
@@ -203,13 +207,14 @@ int handleCommand(Bundle* bundle)
// printf(" %d: '%s'\n", i, bundle->getFileSpecEntry(i));
switch (bundle->getCommand()) {
case kCommandVersion: return doVersion(bundle);
case kCommandList: return doList(bundle);
case kCommandDump: return doDump(bundle);
case kCommandAdd: return doAdd(bundle);
case kCommandRemove: return doRemove(bundle);
case kCommandPackage: return doPackage(bundle);
case kCommandCrunch: return doCrunch(bundle);
case kCommandVersion: return doVersion(bundle);
case kCommandList: return doList(bundle);
case kCommandDump: return doDump(bundle);
case kCommandAdd: return doAdd(bundle);
case kCommandRemove: return doRemove(bundle);
case kCommandPackage: return doPackage(bundle);
case kCommandCrunch: return doCrunch(bundle);
case kCommandSingleCrunch: return doSingleCrunch(bundle);
default:
fprintf(stderr, "%s: requested command not yet supported\n", gProgName);
return 1;
@@ -249,6 +254,8 @@ int main(int argc, char* const argv[])
bundle.setCommand(kCommandPackage);
else if (argv[1][0] == 'c')
bundle.setCommand(kCommandCrunch);
else if (argv[1][0] == 's')
bundle.setCommand(kCommandSingleCrunch);
else {
fprintf(stderr, "ERROR: Unknown command '%s'\n", argv[1]);
wantUsage = true;
@@ -427,6 +434,28 @@ int main(int argc, char* const argv[])
convertPath(argv[0]);
bundle.setCrunchedOutputDir(argv[0]);
break;
case 'i':
argc--;
argv++;
if (!argc) {
fprintf(stderr, "ERROR: No argument supplied for '-i' option\n");
wantUsage = true;
goto bail;
}
convertPath(argv[0]);
bundle.setSingleCrunchInputFile(argv[0]);
break;
case 'o':
argc--;
argv++;
if (!argc) {
fprintf(stderr, "ERROR: No argument supplied for '-o' option\n");
wantUsage = true;
goto bail;
}
convertPath(argv[0]);
bundle.setSingleCrunchOutputFile(argv[0]);
break;
case '0':
argc--;
argv++;

View File

@@ -29,6 +29,7 @@ extern int doAdd(Bundle* bundle);
extern int doRemove(Bundle* bundle);
extern int doPackage(Bundle* bundle);
extern int doCrunch(Bundle* bundle);
extern int doSingleCrunch(Bundle* bundle);
extern int calcPercent(long uncompressedLen, long compressedLen);