aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/tools/android/java/com/google/devtools/build/android/Aapt2ResourceShrinkingAction.java
diff options
context:
space:
mode:
authorGravatar corysmith <corysmith@google.com>2018-08-13 13:03:01 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-08-13 13:05:00 -0700
commit9b9904aa3c97f9f2aa72a23d928770e0a141c983 (patch)
treeb515736793510c8f596afb28ffc53ced9ba2398b /src/tools/android/java/com/google/devtools/build/android/Aapt2ResourceShrinkingAction.java
parent7e2d4dc0c13aa9438c4d25d324cae43d890608ae (diff)
Correctly manage the ProtoApk lifecycle by ensuring it is closed when finished.
Move finding used resources to ProtoResourceUsageAnalyzer for correctness and memory improvements. New report format: now records the kept resource along with the resource that keep it, as well maintaining the root status for each resource. Example line: {number/foo[isRoot: false] = 0x07f...} => [{array/foos[isRoot: true] = 0x...}...] RELNOTES: None PiperOrigin-RevId: 208529350
Diffstat (limited to 'src/tools/android/java/com/google/devtools/build/android/Aapt2ResourceShrinkingAction.java')
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/Aapt2ResourceShrinkingAction.java22
1 files changed, 13 insertions, 9 deletions
diff --git a/src/tools/android/java/com/google/devtools/build/android/Aapt2ResourceShrinkingAction.java b/src/tools/android/java/com/google/devtools/build/android/Aapt2ResourceShrinkingAction.java
index e9fa1cb338..828981afa5 100644
--- a/src/tools/android/java/com/google/devtools/build/android/Aapt2ResourceShrinkingAction.java
+++ b/src/tools/android/java/com/google/devtools/build/android/Aapt2ResourceShrinkingAction.java
@@ -20,6 +20,7 @@ import com.google.common.collect.ImmutableList;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.ListeningExecutorService;
import com.google.devtools.build.android.ResourceShrinkerAction.Options;
+import com.google.devtools.build.android.ResourcesZip.ShrunkProtoApk;
import com.google.devtools.build.android.aapt2.Aapt2ConfigOptions;
import com.google.devtools.build.android.aapt2.CompiledResources;
import com.google.devtools.build.android.aapt2.ResourceCompiler;
@@ -108,19 +109,22 @@ public class Aapt2ResourceShrinkingAction {
.collect(toSet());
if (aapt2ShrinkOptions.useProtoApk) {
- resourcesZip
- .shrinkUsingProto(
+ try (final ShrunkProtoApk shrunk =
+ resourcesZip.shrinkUsingProto(
packages,
options.shrunkJar,
options.proguardMapping,
options.log,
- scopedTmp.subDirectoryOf("shrunk-resources"))
- .writeBinaryTo(linker, options.shrunkApk, aapt2ConfigOptions.resourceTableAsProto)
- .writeReportTo(options.log)
- .writeResourcesToZip(options.shrunkResources);
- if (options.rTxtOutput != null) {
- // Fufill the contract -- however, we do not generate an R.txt from the shrunk resources.
- Files.copy(options.rTxt, options.rTxtOutput);
+ scopedTmp.subDirectoryOf("shrunk-resources"))) {
+ shrunk
+ .writeBinaryTo(linker, options.shrunkApk, aapt2ConfigOptions.resourceTableAsProto)
+ .writeReportTo(options.log)
+ .writeResourcesToZip(options.shrunkResources);
+ if (options.rTxtOutput != null) {
+ // Fufill the contract -- however, we do not generate an R.txt from the shrunk
+ // resources.
+ Files.copy(options.rTxt, options.rTxtOutput);
+ }
}
} else {
final ResourceCompiler resourceCompiler =