From: Josiah Gaskin Date: Thu, 9 Jun 2011 02:31:40 +0000 (-0700) Subject: Copy once-created R.java into library projects X-Git-Url: https://git.saurik.com/android/aapt.git/commitdiff_plain/bc7b4f407e6a1c83d1e953fb54a347dc6c26ad24?hp=-c Copy once-created R.java into library projects This change adds functionality in Aapt to allow specification of library projects to copy the generated R.java file into rather than regenerating the file for each library project. Change-Id: I05939d1dc875bd875be9298ca47cb639235070c6 --- bc7b4f407e6a1c83d1e953fb54a347dc6c26ad24 diff --git a/Bundle.h b/Bundle.h index fa84e93..a32aa7f 100644 --- a/Bundle.h +++ b/Bundle.h @@ -45,7 +45,7 @@ public: mAndroidManifestFile(NULL), mPublicOutputFile(NULL), mRClassDir(NULL), mResourceIntermediatesDir(NULL), mManifestMinSdkVersion(NULL), mMinSdkVersion(NULL), mTargetSdkVersion(NULL), mMaxSdkVersion(NULL), - mVersionCode(NULL), mVersionName(NULL), mCustomPackage(NULL), + mVersionCode(NULL), mVersionName(NULL), mCustomPackage(NULL), mExtraPackages(NULL), mMaxResVersion(NULL), mDebugMode(false), mNonConstantId(false), mProduct(NULL), mArgc(0), mArgv(NULL) {} @@ -138,6 +138,8 @@ public: void setVersionName(const char* val) { mVersionName = val; } const char* getCustomPackage() const { return mCustomPackage; } void setCustomPackage(const char* val) { mCustomPackage = val; } + const char* getExtraPackages() const { return mExtraPackages; } + void setExtraPackages(const char* val) { mExtraPackages = val; } const char* getMaxResVersion() const { return mMaxResVersion; } void setMaxResVersion(const char * val) { mMaxResVersion = val; } bool getDebugMode() { return mDebugMode; } @@ -243,6 +245,7 @@ private: const char* mVersionCode; const char* mVersionName; const char* mCustomPackage; + const char* mExtraPackages; const char* mMaxResVersion; bool mDebugMode; bool mNonConstantId; diff --git a/Command.cpp b/Command.cpp index 739763e..c7dfb8f 100644 --- a/Command.cpp +++ b/Command.cpp @@ -1414,6 +1414,17 @@ int doPackage(Bundle* bundle) if (assets->getPackage() == assets->getSymbolsPrivatePackage()) { if (bundle->getCustomPackage() == NULL) { err = writeResourceSymbols(bundle, assets, assets->getPackage(), true); + // Copy R.java for libraries + if (bundle->getExtraPackages() != NULL) { + // Split on semicolon + String8 libs(bundle->getExtraPackages()); + char* packageString = strtok(libs.lockBuffer(libs.length()), ";"); + while (packageString != NULL) { + err = writeResourceSymbols(bundle, assets, String8(packageString), true); + packageString = strtok(NULL, ";"); + } + libs.unlockBuffer(); + } } else { const String8 customPkg(bundle->getCustomPackage()); err = writeResourceSymbols(bundle, assets, customPkg, true); diff --git a/Main.cpp b/Main.cpp index 1e63131..732541d 100644 --- a/Main.cpp +++ b/Main.cpp @@ -145,6 +145,8 @@ void usage(void) " inserts android:versionName in to manifest.\n" " --custom-package\n" " generates R.java into a different package.\n" + " --extra-packages\n" + " generate R.java for libraries. Separate libraries with ';'.\n" " --auto-add-overlay\n" " Automatically add resources that are only in overlays.\n" " --rename-manifest-package\n" @@ -475,6 +477,15 @@ int main(int argc, char* const argv[]) goto bail; } bundle.setCustomPackage(argv[0]); + } else if (strcmp(cp, "-extra-packages") == 0) { + argc--; + argv++; + if (!argc) { + fprintf(stderr, "ERROR: No argument supplied for '--extra-packages' option\n"); + wantUsage = true; + goto bail; + } + bundle.setExtraPackages(argv[0]); } else if (strcmp(cp, "-utf16") == 0) { bundle.setWantUTF16(true); } else if (strcmp(cp, "-rename-manifest-package") == 0) {