Merge "Add --non-constant-id to aapt."
This commit is contained in:
@ -45,7 +45,7 @@ public:
|
|||||||
mRClassDir(NULL), mResourceIntermediatesDir(NULL), mManifestMinSdkVersion(NULL),
|
mRClassDir(NULL), mResourceIntermediatesDir(NULL), mManifestMinSdkVersion(NULL),
|
||||||
mMinSdkVersion(NULL), mTargetSdkVersion(NULL), mMaxSdkVersion(NULL),
|
mMinSdkVersion(NULL), mTargetSdkVersion(NULL), mMaxSdkVersion(NULL),
|
||||||
mVersionCode(NULL), mVersionName(NULL), mCustomPackage(NULL),
|
mVersionCode(NULL), mVersionName(NULL), mCustomPackage(NULL),
|
||||||
mMaxResVersion(NULL), mDebugMode(false), mProduct(NULL),
|
mMaxResVersion(NULL), mDebugMode(false), mNonConstantId(false), mProduct(NULL),
|
||||||
mArgc(0), mArgv(NULL)
|
mArgc(0), mArgv(NULL)
|
||||||
{}
|
{}
|
||||||
~Bundle(void) {}
|
~Bundle(void) {}
|
||||||
@ -139,6 +139,8 @@ public:
|
|||||||
void setMaxResVersion(const char * val) { mMaxResVersion = val; }
|
void setMaxResVersion(const char * val) { mMaxResVersion = val; }
|
||||||
bool getDebugMode() { return mDebugMode; }
|
bool getDebugMode() { return mDebugMode; }
|
||||||
void setDebugMode(bool val) { mDebugMode = val; }
|
void setDebugMode(bool val) { mDebugMode = val; }
|
||||||
|
bool getNonConstantId() { return mNonConstantId; }
|
||||||
|
void setNonConstantId(bool val) { mNonConstantId = val; }
|
||||||
const char* getProduct() const { return mProduct; }
|
const char* getProduct() const { return mProduct; }
|
||||||
void setProduct(const char * val) { mProduct = val; }
|
void setProduct(const char * val) { mProduct = val; }
|
||||||
|
|
||||||
@ -239,6 +241,7 @@ private:
|
|||||||
const char* mCustomPackage;
|
const char* mCustomPackage;
|
||||||
const char* mMaxResVersion;
|
const char* mMaxResVersion;
|
||||||
bool mDebugMode;
|
bool mDebugMode;
|
||||||
|
bool mNonConstantId;
|
||||||
const char* mProduct;
|
const char* mProduct;
|
||||||
|
|
||||||
/* file specification */
|
/* file specification */
|
||||||
|
@ -160,7 +160,11 @@ void usage(void)
|
|||||||
" product variants\n"
|
" product variants\n"
|
||||||
" --utf16\n"
|
" --utf16\n"
|
||||||
" changes default encoding for resources to UTF-16. Only useful when API\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");
|
" level is set to 7 or higher where the default encoding is UTF-8.\n"
|
||||||
|
" --non-constant-id\n"
|
||||||
|
" Make the resources ID non constant. This is required to make an R java class\n"
|
||||||
|
" that does not contain the final value but is used to make reusable compiled\n"
|
||||||
|
" libraries that need to access resources.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -497,6 +501,8 @@ int main(int argc, char* const argv[])
|
|||||||
goto bail;
|
goto bail;
|
||||||
}
|
}
|
||||||
bundle.setProduct(argv[0]);
|
bundle.setProduct(argv[0]);
|
||||||
|
} else if (strcmp(cp, "-non-constant-id") == 0) {
|
||||||
|
bundle.setNonConstantId(true);
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr, "ERROR: Unknown option '-%s'\n", cp);
|
fprintf(stderr, "ERROR: Unknown option '-%s'\n", cp);
|
||||||
wantUsage = true;
|
wantUsage = true;
|
||||||
|
@ -1655,7 +1655,8 @@ static status_t writeLayoutClasses(
|
|||||||
|
|
||||||
static status_t writeSymbolClass(
|
static status_t writeSymbolClass(
|
||||||
FILE* fp, const sp<AaptAssets>& assets, bool includePrivate,
|
FILE* fp, const sp<AaptAssets>& assets, bool includePrivate,
|
||||||
const sp<AaptSymbols>& symbols, const String8& className, int indent)
|
const sp<AaptSymbols>& symbols, const String8& className, int indent,
|
||||||
|
bool nonConstantId)
|
||||||
{
|
{
|
||||||
fprintf(fp, "%spublic %sfinal class %s {\n",
|
fprintf(fp, "%spublic %sfinal class %s {\n",
|
||||||
getIndentSpace(indent),
|
getIndentSpace(indent),
|
||||||
@ -1665,6 +1666,10 @@ static status_t writeSymbolClass(
|
|||||||
size_t i;
|
size_t i;
|
||||||
status_t err = NO_ERROR;
|
status_t err = NO_ERROR;
|
||||||
|
|
||||||
|
const char * id_format = nonConstantId ?
|
||||||
|
"%spublic static int %s=0x%08x;\n" :
|
||||||
|
"%spublic static final int %s=0x%08x;\n";
|
||||||
|
|
||||||
size_t N = symbols->getSymbols().size();
|
size_t N = symbols->getSymbols().size();
|
||||||
for (i=0; i<N; i++) {
|
for (i=0; i<N; i++) {
|
||||||
const AaptSymbolEntry& sym = symbols->getSymbols().valueAt(i);
|
const AaptSymbolEntry& sym = symbols->getSymbols().valueAt(i);
|
||||||
@ -1717,7 +1722,7 @@ static status_t writeSymbolClass(
|
|||||||
if (deprecated) {
|
if (deprecated) {
|
||||||
fprintf(fp, "%s@Deprecated\n", getIndentSpace(indent));
|
fprintf(fp, "%s@Deprecated\n", getIndentSpace(indent));
|
||||||
}
|
}
|
||||||
fprintf(fp, "%spublic static final int %s=0x%08x;\n",
|
fprintf(fp, id_format,
|
||||||
getIndentSpace(indent),
|
getIndentSpace(indent),
|
||||||
String8(name).string(), (int)sym.int32Val);
|
String8(name).string(), (int)sym.int32Val);
|
||||||
}
|
}
|
||||||
@ -1768,7 +1773,7 @@ static status_t writeSymbolClass(
|
|||||||
if (nclassName == "styleable") {
|
if (nclassName == "styleable") {
|
||||||
styleableSymbols = nsymbols;
|
styleableSymbols = nsymbols;
|
||||||
} else {
|
} else {
|
||||||
err = writeSymbolClass(fp, assets, includePrivate, nsymbols, nclassName, indent);
|
err = writeSymbolClass(fp, assets, includePrivate, nsymbols, nclassName, indent, nonConstantId);
|
||||||
}
|
}
|
||||||
if (err != NO_ERROR) {
|
if (err != NO_ERROR) {
|
||||||
return err;
|
return err;
|
||||||
@ -1839,7 +1844,7 @@ status_t writeResourceSymbols(Bundle* bundle, const sp<AaptAssets>& assets,
|
|||||||
"\n"
|
"\n"
|
||||||
"package %s;\n\n", package.string());
|
"package %s;\n\n", package.string());
|
||||||
|
|
||||||
status_t err = writeSymbolClass(fp, assets, includePrivate, symbols, className, 0);
|
status_t err = writeSymbolClass(fp, assets, includePrivate, symbols, className, 0, bundle->getNonConstantId());
|
||||||
if (err != NO_ERROR) {
|
if (err != NO_ERROR) {
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user