diff options
3 files changed, 34 insertions, 1 deletions
diff --git a/src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java b/src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java index 50d18c9c1c..ac072dbf4a 100644 --- a/src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java +++ b/src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java @@ -176,6 +176,8 @@ public class Aapt2ResourcePackagingAction { final PackagedResources packagedResources = ResourceLinker.create(aaptConfigOptions.aapt2, linkedOut) .profileUsing(profiler) + .customPackage(options.packageForR) + .outputAsProto(aaptConfigOptions.resourceTableAsProto) .dependencies(ImmutableList.of(StaticLibrary.from(aaptConfigOptions.androidJar))) .include(compiledResourceDeps) .withAssets(assetDirs) diff --git a/src/tools/android/java/com/google/devtools/build/android/aapt2/Aapt2ConfigOptions.java b/src/tools/android/java/com/google/devtools/build/android/aapt2/Aapt2ConfigOptions.java index 1b402eaf90..0a1e472e02 100644 --- a/src/tools/android/java/com/google/devtools/build/android/aapt2/Aapt2ConfigOptions.java +++ b/src/tools/android/java/com/google/devtools/build/android/aapt2/Aapt2ConfigOptions.java @@ -176,4 +176,14 @@ public class Aapt2ConfigOptions extends OptionsBase { help = "Use compiled resources for merging rather than parsed symbols binary." ) public boolean useCompiledResourcesForMerge; + + @Option( + name = "resourceTableAsProto", + defaultValue = "false", + category = "config", + documentationCategory = OptionDocumentationCategory.UNCATEGORIZED, + effectTags = {OptionEffectTag.UNKNOWN}, + help = "Generate the resource table as a protocol buffer." + ) + public boolean resourceTableAsProto; } diff --git a/src/tools/android/java/com/google/devtools/build/android/aapt2/ResourceLinker.java b/src/tools/android/java/com/google/devtools/build/android/aapt2/ResourceLinker.java index 99af38766b..c230ddccc5 100644 --- a/src/tools/android/java/com/google/devtools/build/android/aapt2/ResourceLinker.java +++ b/src/tools/android/java/com/google/devtools/build/android/aapt2/ResourceLinker.java @@ -38,6 +38,9 @@ import java.util.stream.Collectors; /** Performs linking of {@link CompiledResources} using aapt2. */ public class ResourceLinker { + private String customPackage; + private boolean outputAsProto; + /** Represents errors thrown during linking. */ public static class LinkError extends Aapt2Exception { @@ -116,11 +119,21 @@ public class ResourceLinker { return this; } + public ResourceLinker customPackage(String customPackage) { + this.customPackage = customPackage; + return this; + } + public ResourceLinker filterToDensity(List<String> densities) { this.densities = densities; return this; } + public ResourceLinker outputAsProto(boolean outputAsProto) { + this.outputAsProto = outputAsProto; + return this; + } + /** * Statically links the {@link CompiledResources} with the dependencies to produce a {@link * StaticLibrary}. @@ -149,8 +162,11 @@ public class ResourceLinker { .add("--manifest", resources.getManifest()) .add("--static-lib") .add("--no-static-lib-packages") + .add("--custom-package", customPackage) .whenVersionIsAtLeast(new Revision(23)) .thenAdd("--no-version-vectors") + .when(outputAsProto) + .thenAdd("--proto-format") .add("-R", resources.getZip()) .addRepeated("-R", compiledResourcePaths) .addRepeated("-I", pathsToLinkAgainst) @@ -165,7 +181,7 @@ public class ResourceLinker { // working around aapt2 not producing transitive R.txt and R.java if (linkAgainst.size() > 1) { profiler.startTask("rfix"); - logger.fine( + logger.info( new AaptCommandBuilder(aapt2) .forBuildToolsVersion(buildToolsVersion) .forVariantType(VariantType.LIBRARY) @@ -174,6 +190,8 @@ public class ResourceLinker { .add("--no-static-lib-packages") .whenVersionIsAtLeast(new Revision(23)) .thenAdd("--no-version-vectors") + .when(outputAsProto) + .thenAdd("--proto-format") // only link against jars .addRepeated( "-I", @@ -219,11 +237,14 @@ public class ResourceLinker { .thenAdd("--no-version-vectors") // Turn off namespaced resources .add("--no-static-lib-packages") + .when(outputAsProto) + .thenAdd("--proto-format") .when(Objects.equals(logger.getLevel(), Level.FINE)) .thenAdd("-v") .add("--manifest", compiled.getManifest()) // Enables resource redefinition and merging .add("--auto-add-overlay") + .add("--custom-package", customPackage) .when(densities.size() == 1) .thenAddRepeated("--preferred-density", densities) .add("--stable-ids", compiled.getStableIds()) |