Don't instantiate legacy structure in optimized resource shrinking mode
Bug: 287398085
Change-Id: I907971d9e76db9d116f8b9995b34d344ddc7f964
diff --git a/src/main/java/com/android/tools/r8/R8.java b/src/main/java/com/android/tools/r8/R8.java
index b4f89a3..05daa4d 100644
--- a/src/main/java/com/android/tools/r8/R8.java
+++ b/src/main/java/com/android/tools/r8/R8.java
@@ -946,34 +946,35 @@
private void shrinkResources(
Map<String, byte[]> dexFileContent, AppView<AppInfoWithClassHierarchy> appView) {
- LegacyResourceShrinker.Builder resourceShrinkerBuilder = LegacyResourceShrinker.builder();
Reporter reporter = options.reporter;
- dexFileContent.forEach(resourceShrinkerBuilder::addDexInput);
try {
- addResourcesToBuilder(
- resourceShrinkerBuilder, reporter, options.androidResourceProvider, FeatureSplit.BASE);
- if (options.featureSplitConfiguration != null) {
- for (FeatureSplit featureSplit : options.featureSplitConfiguration.getFeatureSplits()) {
- if (featureSplit.getAndroidResourceProvider() != null) {
- addResourcesToBuilder(
- resourceShrinkerBuilder,
- reporter,
- featureSplit.getAndroidResourceProvider(),
- featureSplit);
- }
- }
- }
- if (options.androidResourceProguardMapStrings != null) {
- resourceShrinkerBuilder.setProguardMapStrings(options.androidResourceProguardMapStrings);
- }
- resourceShrinkerBuilder.setShrinkerDebugReporter(
- ResourceShrinkerUtils.shrinkerDebugReporterFromStringConsumer(
- options.resourceShrinkerConfiguration.getDebugConsumer(), reporter));
- LegacyResourceShrinker shrinker = resourceShrinkerBuilder.build();
ShrinkerResult shrinkerResult;
- if (options.resourceShrinkerConfiguration.isOptimizedShrinking()) {
+
+ if (appView.options().isOptimizedResourceShrinking()) {
shrinkerResult = appView.getResourceShrinkerState().shrinkModel();
} else {
+ LegacyResourceShrinker.Builder resourceShrinkerBuilder = LegacyResourceShrinker.builder();
+ dexFileContent.forEach(resourceShrinkerBuilder::addDexInput);
+ addResourcesToBuilder(
+ resourceShrinkerBuilder, reporter, options.androidResourceProvider, FeatureSplit.BASE);
+ if (options.featureSplitConfiguration != null) {
+ for (FeatureSplit featureSplit : options.featureSplitConfiguration.getFeatureSplits()) {
+ if (featureSplit.getAndroidResourceProvider() != null) {
+ addResourcesToBuilder(
+ resourceShrinkerBuilder,
+ reporter,
+ featureSplit.getAndroidResourceProvider(),
+ featureSplit);
+ }
+ }
+ }
+ if (options.androidResourceProguardMapStrings != null) {
+ resourceShrinkerBuilder.setProguardMapStrings(options.androidResourceProguardMapStrings);
+ }
+ resourceShrinkerBuilder.setShrinkerDebugReporter(
+ ResourceShrinkerUtils.shrinkerDebugReporterFromStringConsumer(
+ options.resourceShrinkerConfiguration.getDebugConsumer(), reporter));
+ LegacyResourceShrinker shrinker = resourceShrinkerBuilder.build();
shrinkerResult = shrinker.run();
}
Set<String> toKeep = shrinkerResult.getResFolderEntriesToKeep();