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();