[RPBB] Output the map file as produced by aapt2-optimize when resource path shortening is enabled. PiperOrigin-RevId: 261967685
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 4a687e6..05d37db 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
@@ -208,6 +208,11 @@ if (options.resourcesOutput != null) { packagedResources.asArchive().writeTo(options.resourcesOutput, /* compress= */ false); } + if (aaptConfigOptions.resourcePathShorteningMapOutput != null) { + copy( + packagedResources.resourcePathShorteningMap(), + aaptConfigOptions.resourcePathShorteningMapOutput); + } } }
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 c0ae124..93a3fc8 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
@@ -17,6 +17,7 @@ import com.android.repository.Revision; import com.google.devtools.build.android.Converters.ExistingPathConverter; +import com.google.devtools.build.android.Converters.PathConverter; import com.google.devtools.build.android.Converters.RevisionConverter; import com.google.devtools.common.options.Converters.CommaSeparatedOptionListConverter; import com.google.devtools.common.options.Option; @@ -27,7 +28,7 @@ import java.nio.file.Path; import java.util.List; -/** Aaprt2 specific configuration options. */ +/** Aapt2 specific configuration options. */ public class Aapt2ConfigOptions extends OptionsBase { @Option( name = "aapt2", @@ -88,14 +89,24 @@ public TriState conditionalKeepRules; @Option( - name = "uncompressedExtensions", - defaultValue = "", - converter = CommaSeparatedOptionListConverter.class, - category = "config", - documentationCategory = OptionDocumentationCategory.UNCATEGORIZED, - effectTags = {OptionEffectTag.UNKNOWN}, - help = "A list of file extensions not to compress." - ) + name = "resourcePathShorteningMapOutput", + defaultValue = "null", + converter = PathConverter.class, + documentationCategory = OptionDocumentationCategory.UNDOCUMENTED, + effectTags = {OptionEffectTag.UNKNOWN}, + help = + "Path to write the map of old resource paths to shortened paths, if resource path" + + " shortening is enabled.") + public Path resourcePathShorteningMapOutput; + + @Option( + name = "uncompressedExtensions", + defaultValue = "", + converter = CommaSeparatedOptionListConverter.class, + category = "config", + documentationCategory = OptionDocumentationCategory.UNCATEGORIZED, + effectTags = {OptionEffectTag.UNKNOWN}, + help = "A list of file extensions not to compress.") public List<String> uncompressedExtensions; @Option(
diff --git a/src/tools/android/java/com/google/devtools/build/android/aapt2/PackagedResources.java b/src/tools/android/java/com/google/devtools/build/android/aapt2/PackagedResources.java index 7a388e0..eb54b7b 100644 --- a/src/tools/android/java/com/google/devtools/build/android/aapt2/PackagedResources.java +++ b/src/tools/android/java/com/google/devtools/build/android/aapt2/PackagedResources.java
@@ -31,6 +31,8 @@ public abstract Path mainDexProguard(); + public abstract Path resourcePathShorteningMap(); + public abstract Path javaSourceDirectory(); abstract Path resourceIds(); @@ -45,6 +47,7 @@ Path rTxt, Path proguardConfig, Path mainDexProguard, + Path resourcePathShorteningMap, Path javaSourceDirectory, Path resourceIds, Path attributes, @@ -55,6 +58,7 @@ rTxt, proguardConfig, mainDexProguard, + resourcePathShorteningMap, javaSourceDirectory, resourceIds, attributes,
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 ece53da..2480c06 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
@@ -134,6 +134,7 @@ private final ListeningExecutorService executorService; private final Path workingDirectory; + private final Path resourcePathShorteningMap; private List<StaticLibrary> linkAgainst = ImmutableList.of(); @@ -160,6 +161,7 @@ this.aapt2 = aapt2; this.executorService = executorService; this.workingDirectory = workingDirectory; + this.resourcePathShorteningMap = workingDirectory.resolve("resource_path_shortening.map"); } public static ResourceLinker create( @@ -544,6 +546,8 @@ .thenAdd("--target-densities", densities.stream().collect(Collectors.joining(","))) .when(enableResourcePathShortening) .thenAdd("--enable-resource-path-shortening") + .when(enableResourcePathShortening) + .thenAdd("--resource-path-shortening-map", resourcePathShorteningMap) .add("-o", optimized) .add(binary.toString()) .execute(String.format("Optimizing %s", compiled.getManifest()))); @@ -559,6 +563,12 @@ Path mainDexProguard = workingDirectory.resolve("proguard.maindex.cfg"); Path javaSourceDirectory = Files.createDirectories(workingDirectory.resolve("java")); Path resourceIds = workingDirectory.resolve("ids.txt"); + if (Files.notExists(resourcePathShorteningMap)) { + // We need to produce a path shortening map file regardless of whether shortening was + // activated with the --define flag. If we've reached here, it means the optimization was + // not performed, so output an empty file. + Files.createFile(resourcePathShorteningMap); + } try (ProtoApk protoApk = linkProtoApk( compiled, rTxt, proguardConfig, mainDexProguard, javaSourceDirectory, resourceIds)) { @@ -570,6 +580,7 @@ rTxt, proguardConfig, mainDexProguard, + resourcePathShorteningMap, javaSourceDirectory, resourceIds, extractAttributes(compiled),
diff --git a/third_party/ijar/test/BUILD b/third_party/ijar/test/BUILD index f6c0433..151e59e 100644 --- a/third_party/ijar/test/BUILD +++ b/third_party/ijar/test/BUILD
@@ -1,5 +1,3 @@ -load("@rules_java//java:defs.bzl", "java_binary", "java_library", "java_test") - package(default_visibility = ["//visibility:__pkg__"]) licenses(["notice"]) # Apache License 2.0