diff --git a/src/main/java/com/android/tools/r8/utils/CompileDumpBase.java b/src/main/java/com/android/tools/r8/utils/CompileDumpBase.java
index f6c7269..a5aadef 100644
--- a/src/main/java/com/android/tools/r8/utils/CompileDumpBase.java
+++ b/src/main/java/com/android/tools/r8/utils/CompileDumpBase.java
@@ -34,6 +34,22 @@
         .accept(new Object[] {isolatedSplits});
   }
 
+  static void setupResourceShrinking(
+      Path androidResourcesInput, Path androidResourcesOutput, Object builder) {
+    try {
+      Class<?> androidResourceProvider =
+          Class.forName("com.android.tools.r8.AndroidResourceProvider");
+      Class<?> androidResourceConsumer =
+          Class.forName("com.android.tools.r8.AndroidResourceConsumer");
+      getReflectiveBuilderMethod(builder, "setAndroidResourceProvider", androidResourceProvider)
+          .accept(new Object[] {createAndroidResourceProvider(androidResourcesInput)});
+      getReflectiveBuilderMethod(builder, "setAndroidResourceConsumer", androidResourceConsumer)
+          .accept(new Object[] {createAndroidResourceConsumer(androidResourcesOutput)});
+    } catch (ClassNotFoundException e) {
+      // Ignore
+    }
+  }
+
   static void addArtProfilesForRewriting(Object builder, Map<Path, Path> artProfileFiles) {
     try {
       Class<?> artProfileProviderClass =
@@ -62,38 +78,44 @@
         .accept(new Object[] {createStartupProfileProviders(startupProfileFiles)});
   }
 
-  static Object createArtProfileProvider(Path artProfile) {
-    Object[] artProfileProvider = new Object[1];
+  static Object callReflectiveDumpUtilsMethodWithPath(Path path, String method) {
+    Object[] returnObject = new Object[1];
     boolean found =
         callReflectiveUtilsMethod(
-            "createArtProfileProviderFromDumpFile",
+            method,
             new Class<?>[] {Path.class},
-            fn -> artProfileProvider[0] = fn.apply(new Object[] {artProfile}));
+            fn -> returnObject[0] = fn.apply(new Object[] {path}));
     if (!found) {
       System.out.println(
-          "Unable to add art profiles as input. "
-              + "Method createArtProfileProviderFromDumpFile() was not found.");
+          "Unable to call invoke method on path "
+              + path
+              + ". "
+              + "Method "
+              + method
+              + "() was not found.");
       return null;
     }
-    System.out.println(artProfileProvider[0]);
-    return artProfileProvider[0];
+    return returnObject[0];
+  }
+
+  static Object createAndroidResourceProvider(Path resourceInput) {
+    return callReflectiveDumpUtilsMethodWithPath(
+        resourceInput, "createAndroidResourceProviderFromDumpFile");
+  }
+
+  static Object createAndroidResourceConsumer(Path resourceOutput) {
+    return callReflectiveDumpUtilsMethodWithPath(
+        resourceOutput, "createAndroidResourceConsumerFromDumpFile");
+  }
+
+  static Object createArtProfileProvider(Path artProfile) {
+    return callReflectiveDumpUtilsMethodWithPath(
+        artProfile, "createArtProfileProviderFromDumpFile");
   }
 
   static Object createResidualArtProfileConsumer(Path residualArtProfile) {
-    Object[] residualArtProfileConsumer = new Object[1];
-    boolean found =
-        callReflectiveUtilsMethod(
-            "createResidualArtProfileConsumerFromDumpFile",
-            new Class<?>[] {Path.class},
-            fn -> residualArtProfileConsumer[0] = fn.apply(new Object[] {residualArtProfile}));
-    if (!found) {
-      System.out.println(
-          "Unable to add art profiles as input. "
-              + "Method createResidualArtProfileConsumerFromDumpFile() was not found.");
-      return null;
-    }
-    System.out.println(residualArtProfileConsumer[0]);
-    return residualArtProfileConsumer[0];
+    return callReflectiveDumpUtilsMethodWithPath(
+        residualArtProfile, "createResidualArtProfileConsumerFromDumpFile");
   }
 
   static Collection<Object> createStartupProfileProviders(List<Path> startupProfileFiles) {
diff --git a/src/main/java/com/android/tools/r8/utils/CompileDumpCompatR8.java b/src/main/java/com/android/tools/r8/utils/CompileDumpCompatR8.java
index cd01544..9112b77 100644
--- a/src/main/java/com/android/tools/r8/utils/CompileDumpCompatR8.java
+++ b/src/main/java/com/android/tools/r8/utils/CompileDumpCompatR8.java
@@ -64,7 +64,7 @@
           "--startup-profile");
 
   private static final List<String> VALID_OPTIONS_WITH_TWO_OPERANDS =
-      Arrays.asList("--art-profile", "--feature-jar");
+      Arrays.asList("--art-profile", "--feature-jar", "--android-resources");
 
   private static boolean FileUtils_isArchive(Path path) {
     String name = path.getFileName().toString().toLowerCase(Locale.ROOT);
@@ -91,6 +91,8 @@
     List<Path> mainDexRulesFiles = new ArrayList<>();
     Map<Path, Path> artProfileFiles = new LinkedHashMap<>();
     List<Path> startupProfileFiles = new ArrayList<>();
+    Path androidResourcesInput = null;
+    Path androidResourcesOutput = null;
     int minApi = 1;
     int threads = -1;
     boolean enableMissingLibraryApiModeling = false;
@@ -202,6 +204,12 @@
               artProfileFiles.put(Paths.get(firstOperand), Paths.get(secondOperand));
               break;
             }
+          case "--android-resources":
+            {
+              androidResourcesInput = Paths.get(firstOperand);
+              androidResourcesOutput = Paths.get(secondOperand);
+              break;
+            }
           case "--feature-jar":
             {
               Path featureIn = Paths.get(firstOperand);
@@ -237,6 +245,9 @@
     if (desugaredLibJson != null) {
       commandBuilder.addDesugaredLibraryConfiguration(readAllBytesJava7(desugaredLibJson));
     }
+    if (androidResourcesInput != null) {
+      setupResourceShrinking(androidResourcesInput, androidResourcesOutput, commandBuilder);
+    }
     if (desugaredLibKeepRuleConsumer != null) {
       commandBuilder.setDesugaredLibraryKeepRuleConsumer(desugaredLibKeepRuleConsumer);
     }
diff --git a/src/main/java/com/android/tools/r8/utils/CompileDumpUtils.java b/src/main/java/com/android/tools/r8/utils/CompileDumpUtils.java
index 4356671..ef013f6 100644
--- a/src/main/java/com/android/tools/r8/utils/CompileDumpUtils.java
+++ b/src/main/java/com/android/tools/r8/utils/CompileDumpUtils.java
@@ -4,6 +4,10 @@
 
 package com.android.tools.r8.utils;
 
+import com.android.tools.r8.AndroidResourceConsumer;
+import com.android.tools.r8.AndroidResourceProvider;
+import com.android.tools.r8.ArchiveProtoAndroidResourceConsumer;
+import com.android.tools.r8.ArchiveProtoAndroidResourceProvider;
 import com.android.tools.r8.KeepMethodForCompileDump;
 import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.origin.PathOrigin;
@@ -34,6 +38,16 @@
   }
 
   @KeepMethodForCompileDump
+  static AndroidResourceProvider createAndroidResourceProviderFromDumpFile(Path resourceInput) {
+    return new ArchiveProtoAndroidResourceProvider(resourceInput);
+  }
+
+  @KeepMethodForCompileDump
+  static AndroidResourceConsumer createAndroidResourceConsumerFromDumpFile(Path resourceOutput) {
+    return new ArchiveProtoAndroidResourceConsumer(resourceOutput);
+  }
+
+  @KeepMethodForCompileDump
   static StartupProfileProvider createStartupProfileProviderFromDumpFile(Path path) {
     return new StartupProfileProvider() {
 
diff --git a/tools/compiledump.py b/tools/compiledump.py
index 3c483f7..c819865 100755
--- a/tools/compiledump.py
+++ b/tools/compiledump.py
@@ -223,6 +223,9 @@
     def main_dex_rules_resource(self):
         return self.if_exists('main-dex-rules.txt')
 
+    def resource_ap_file(self):
+        return self.if_exists('app-res.ap_')
+
     def art_profile_resources(self):
         art_profile_resources = []
         while True:
@@ -633,6 +636,10 @@
             cmd.append('--isolated-splits')
         if dump.library_jar():
             cmd.extend(['--lib', dump.library_jar()])
+        if dump.resource_ap_file():
+            res_output = os.path.join(temp, 'ap-res-out.ap_')
+            cmd.extend(['--android-resources', dump.resource_ap_file(),
+                        res_output])
         if dump.classpath_jar() and not is_l8_compiler(compiler):
             cmd.extend([
                 '--target' if compiler == 'tracereferences' else '--classpath',
