Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b1f6ad82 authored by Xavier Ducrohet's avatar Xavier Ducrohet
Browse files

Add single crunch command to aapt.

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.

Change-Id: I635ee3e871d035b9db2fb593802d914e48241abf
parent 2d1eb74a
Loading
Loading
Loading
Loading
+8 −0
Original line number Original line Diff line number Diff line
@@ -38,6 +38,7 @@ typedef enum Command {
    kCommandRemove,
    kCommandRemove,
    kCommandPackage,
    kCommandPackage,
    kCommandCrunch,
    kCommandCrunch,
    kCommandSingleCrunch,
} Command;
} Command;


/*
/*
@@ -62,6 +63,7 @@ public:
          mVersionCode(NULL), mVersionName(NULL), mCustomPackage(NULL), mExtraPackages(NULL),
          mVersionCode(NULL), mVersionName(NULL), mCustomPackage(NULL), mExtraPackages(NULL),
          mMaxResVersion(NULL), mDebugMode(false), mNonConstantId(false), mProduct(NULL),
          mMaxResVersion(NULL), mDebugMode(false), mNonConstantId(false), mProduct(NULL),
          mUseCrunchCache(false), mErrorOnFailedInsert(false), mOutputTextSymbols(NULL),
          mUseCrunchCache(false), mErrorOnFailedInsert(false), mOutputTextSymbols(NULL),
          mSingleCrunchInputFile(NULL), mSingleCrunchOutputFile(NULL),
          mArgc(0), mArgv(NULL)
          mArgc(0), mArgv(NULL)
        {}
        {}
    ~Bundle(void) {}
    ~Bundle(void) {}
@@ -176,6 +178,10 @@ public:
    bool getUseCrunchCache() const { return mUseCrunchCache; }
    bool getUseCrunchCache() const { return mUseCrunchCache; }
    const char* getOutputTextSymbols() const { return mOutputTextSymbols; }
    const char* getOutputTextSymbols() const { return mOutputTextSymbols; }
    void setOutputTextSymbols(const char* val) { mOutputTextSymbols = val; }
    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.
     * Set and get the file specification.
@@ -283,6 +289,8 @@ private:
    bool        mUseCrunchCache;
    bool        mUseCrunchCache;
    bool        mErrorOnFailedInsert;
    bool        mErrorOnFailedInsert;
    const char* mOutputTextSymbols;
    const char* mOutputTextSymbols;
    const char* mSingleCrunchInputFile;
    const char* mSingleCrunchOutputFile;


    /* file specification */
    /* file specification */
    int         mArgc;
    int         mArgc;
+16 −0
Original line number Original line Diff line number Diff line
@@ -7,6 +7,7 @@
#include "Bundle.h"
#include "Bundle.h"
#include "ResourceFilter.h"
#include "ResourceFilter.h"
#include "ResourceTable.h"
#include "ResourceTable.h"
#include "Images.h"
#include "XMLNode.h"
#include "XMLNode.h"


#include <utils/Log.h>
#include <utils/Log.h>
@@ -1839,6 +1840,21 @@ int doCrunch(Bundle* bundle)
    return NO_ERROR;
    return NO_ERROR;
}
}


/*
 * Do PNG Crunching on a single flag
 *  -i points to a single png file
 *  -o points to a single png output file
 */
int doSingleCrunch(Bundle* bundle)
{
    fprintf(stdout, "Crunching single PNG file: %s\n", bundle->getSingleCrunchInputFile());
    fprintf(stdout, "\tOutput file: %s\n", bundle->getSingleCrunchOutputFile());

    String8 input(bundle->getSingleCrunchInputFile());
    String8 output(bundle->getSingleCrunchOutputFile());
    return preProcessImageToCache(bundle, input, output);
}

char CONSOLE_DATA[2925] = {
char CONSOLE_DATA[2925] = {
    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
    32, 32, 32, 32, 32, 32, 32, 95, 46, 32, 32, 32, 32, 32, 32, 32, 32, 32,
    32, 32, 32, 32, 32, 32, 32, 95, 46, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+37 −8
Original line number Original line Diff line number Diff line
@@ -85,7 +85,11 @@ void usage(void)
        "   Add specified files to Zip-compatible archive.\n\n", gProgName);
        "   Add specified files to Zip-compatible archive.\n\n", gProgName);
    fprintf(stderr,
    fprintf(stderr,
        " %s c[runch] [-v] -S resource-sources ... -C output-folder ...\n"
        " %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,
    fprintf(stderr,
        " %s v[ersion]\n"
        " %s v[ersion]\n"
        "   Print program version.\n\n", gProgName);
        "   Print program version.\n\n", gProgName);
@@ -210,6 +214,7 @@ int handleCommand(Bundle* bundle)
    case kCommandRemove:       return doRemove(bundle);
    case kCommandRemove:       return doRemove(bundle);
    case kCommandPackage:      return doPackage(bundle);
    case kCommandPackage:      return doPackage(bundle);
    case kCommandCrunch:       return doCrunch(bundle);
    case kCommandCrunch:       return doCrunch(bundle);
    case kCommandSingleCrunch: return doSingleCrunch(bundle);
    default:
    default:
        fprintf(stderr, "%s: requested command not yet supported\n", gProgName);
        fprintf(stderr, "%s: requested command not yet supported\n", gProgName);
        return 1;
        return 1;
@@ -249,6 +254,8 @@ int main(int argc, char* const argv[])
        bundle.setCommand(kCommandPackage);
        bundle.setCommand(kCommandPackage);
    else if (argv[1][0] == 'c')
    else if (argv[1][0] == 'c')
        bundle.setCommand(kCommandCrunch);
        bundle.setCommand(kCommandCrunch);
    else if (argv[1][0] == 's')
        bundle.setCommand(kCommandSingleCrunch);
    else {
    else {
        fprintf(stderr, "ERROR: Unknown command '%s'\n", argv[1]);
        fprintf(stderr, "ERROR: Unknown command '%s'\n", argv[1]);
        wantUsage = true;
        wantUsage = true;
@@ -427,6 +434,28 @@ int main(int argc, char* const argv[])
                convertPath(argv[0]);
                convertPath(argv[0]);
                bundle.setCrunchedOutputDir(argv[0]);
                bundle.setCrunchedOutputDir(argv[0]);
                break;
                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':
            case '0':
                argc--;
                argc--;
                argv++;
                argv++;
+1 −0
Original line number Original line Diff line number Diff line
@@ -29,6 +29,7 @@ extern int doAdd(Bundle* bundle);
extern int doRemove(Bundle* bundle);
extern int doRemove(Bundle* bundle);
extern int doPackage(Bundle* bundle);
extern int doPackage(Bundle* bundle);
extern int doCrunch(Bundle* bundle);
extern int doCrunch(Bundle* bundle);
extern int doSingleCrunch(Bundle* bundle);


extern int calcPercent(long uncompressedLen, long compressedLen);
extern int calcPercent(long uncompressedLen, long compressedLen);