am 5b151690: Merge "AAPT2: Add option to generate static library" into mnc-dev

* commit '5b1516900ac23fbbc32c3fee36009e1dd3569dcd':
  AAPT2: Add option to generate static library
This commit is contained in:
Adam Lesinski
2015-05-05 00:58:35 +00:00
committed by Android Git Automerger
2 changed files with 25 additions and 3 deletions

View File

@@ -323,9 +323,17 @@ struct AaptOptions {
Compile,
};
enum class PackageType {
StandardApp,
StaticLibrary,
};
// The phase to process.
Phase phase;
// The type of package to produce.
PackageType packageType = PackageType::StandardApp;
// Details about the app.
AppInfo appInfo;
@@ -800,7 +808,11 @@ bool link(const AaptOptions& options, const std::shared_ptr<ResourceTable>& outT
// Generate the Java class file.
if (options.generateJavaClass) {
JavaClassGenerator generator(outTable, {});
JavaClassGenerator::Options javaOptions;
if (options.packageType == AaptOptions::PackageType::StaticLibrary) {
javaOptions.useFinal = false;
}
JavaClassGenerator generator(outTable, javaOptions);
for (const std::u16string& package : linkedPackages) {
Source outPath = options.generateJavaClass.value();
@@ -852,7 +864,10 @@ bool link(const AaptOptions& options, const std::shared_ptr<ResourceTable>& outT
// Flatten the resource table.
TableFlattener::Options flattenerOptions;
flattenerOptions.useExtendedChunks = false;
if (options.packageType == AaptOptions::PackageType::StaticLibrary) {
flattenerOptions.useExtendedChunks = true;
}
if (!writeResourceTable(options, outTable, flattenerOptions, &outApk)) {
return false;
}
@@ -999,6 +1014,7 @@ static AaptOptions prepareArgs(int argc, char** argv) {
printCommandsAndDie();
}
bool isStaticLib = false;
if (options.phase == AaptOptions::Phase::Compile) {
flag::requiredFlag("--package", "Android package name",
[&options](const StringPiece& arg) {
@@ -1026,6 +1042,8 @@ static AaptOptions prepareArgs(int argc, char** argv) {
[&options](const StringPiece& arg) {
options.generateJavaClass = Source{ arg.toString() };
});
flag::optionalSwitch("--static-lib", "generate a static Android library", true,
&isStaticLib);
}
// Common flags for all steps.
@@ -1049,6 +1067,10 @@ static AaptOptions prepareArgs(int argc, char** argv) {
flag::usageAndDie(fullCommand);
}
if (isStaticLib) {
options.packageType = AaptOptions::PackageType::StaticLibrary;
}
// Copy all the remaining arguments.
for (const std::string& arg : flag::getArgs()) {
options.input.push_back(Source{ arg });

View File

@@ -56,7 +56,7 @@ $(foreach d,$(PRIVATE_RESOURCE_TYPES),$(eval $(call make-collect-rule,$d)))
# Link: out/package-unaligned.apk <- out/values-v4.apk out/drawable-v4.apk
$(PRIVATE_APK_UNALIGNED): $(PRIVATE_INTERMEDIATE_TABLES) $(PRIVATE_LIBS) AndroidManifest.xml
$(AAPT) link --manifest AndroidManifest.xml $(addprefix -I ,$(PRIVATE_LIBS)) --java $(LOCAL_GEN) -o $@ $(PRIVATE_INTERMEDIATE_TABLES)
$(AAPT) link --manifest AndroidManifest.xml $(addprefix -I ,$(PRIVATE_LIBS)) --java $(LOCAL_GEN) -o $@ $(PRIVATE_INTERMEDIATE_TABLES) --static-lib
# R.java: gen/com/android/app/R.java <- out/resources.arsc
# No action since R.java is generated when out/resources.arsc is.