diff --git a/src/main/java/com/android/tools/r8/R8Command.java b/src/main/java/com/android/tools/r8/R8Command.java
index 0cd3dc3..8ef2201 100644
--- a/src/main/java/com/android/tools/r8/R8Command.java
+++ b/src/main/java/com/android/tools/r8/R8Command.java
@@ -1542,7 +1542,8 @@
   private static class ResourceShrinkerMapStringConsumer implements StringConsumer {
 
     private final InternalOptions internal;
-    private StringBuilder resultBuilder = new StringBuilder();
+    private List<String> mappingStrings = new ArrayList<>();
+    private StringBuilder current = new StringBuilder();
 
     public ResourceShrinkerMapStringConsumer(InternalOptions internal) {
       this.internal = internal;
@@ -1550,13 +1551,30 @@
 
     @Override
     public void accept(String string, DiagnosticsHandler handler) {
-      resultBuilder.append(string);
+      current.append(string);
+      if (string.endsWith("\n")) {
+        addNoneCommentLinesAndReset();
+      }
+    }
+
+    private void addNoneCommentLinesAndReset() {
+      StringUtils.splitLines(
+          current.toString(),
+          false,
+          line -> {
+            if (!line.startsWith("#")) {
+              mappingStrings.add(line);
+            }
+          });
+      current.setLength(0);
     }
 
     @Override
     public void finished(DiagnosticsHandler handler) {
-      internal.androidResourceProguardMapStrings = StringUtils.splitLines(resultBuilder.toString());
-      resultBuilder = null;
+      if (current.length() != 0) {
+        addNoneCommentLinesAndReset();
+      }
+      internal.androidResourceProguardMapStrings = mappingStrings;
     }
   }
 
diff --git a/src/main/java/com/android/tools/r8/utils/StringUtils.java b/src/main/java/com/android/tools/r8/utils/StringUtils.java
index 082fa95..e657762 100644
--- a/src/main/java/com/android/tools/r8/utils/StringUtils.java
+++ b/src/main/java/com/android/tools/r8/utils/StringUtils.java
@@ -292,7 +292,7 @@
     return list;
   }
 
-  private static void splitLines(
+  public static void splitLines(
       String content, boolean includeTrailingEmptyLine, Consumer<String> consumer) {
     int length = content.length();
     int start = 0;
