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

Commit 2d603a49 authored by Adam Lesinski's avatar Adam Lesinski Committed by Android Git Automerger
Browse files

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

* commit '41cb1b39':
  AAPT2: Add option to generate static library
parents c7fb6b5d 41cb1b39
Loading
Loading
Loading
Loading
+24 −2
Original line number Diff line number Diff line
@@ -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 });
+1 −1
Original line number Diff line number Diff line
@@ -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.