aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar corysmith <corysmith@google.com>2018-01-25 10:33:38 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-01-25 10:35:39 -0800
commitffaef29064dededa522b82715f35e2f190417d58 (patch)
tree20dc024101873c9fe6ec6da8c76e2ead100903af
parent15bf148ea28ee2bb817327749c291a76928c0803 (diff)
Add the ability to output the resource table as a protocol buffer to the Aapt2ResourcePackagingAction
Ensure that the custom package is respected in aapt2. This only impact the srcjar, as the classes are generated via another method. RELNOTES: None PiperOrigin-RevId: 183260369
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java2
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/aapt2/Aapt2ConfigOptions.java10
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/aapt2/ResourceLinker.java23
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())