Fix race in main-dex list building

Adding from files and from strings need to run on the same thread.

Change-Id: I3f2918cf8b72d6a262ecf9dfe87a0b7f097a08dd
diff --git a/src/main/java/com/android/tools/r8/dex/ApplicationReader.java b/src/main/java/com/android/tools/r8/dex/ApplicationReader.java
index 8820b4d..036c537 100644
--- a/src/main/java/com/android/tools/r8/dex/ApplicationReader.java
+++ b/src/main/java/com/android/tools/r8/dex/ApplicationReader.java
@@ -155,16 +155,16 @@
             InputStream input = closer.register(resource.getStream());
             builder.addToMainDexList(MainDexList.parse(input, itemFactory));
           }
+          builder.addToMainDexList(
+              inputApp.getMainDexClasses()
+                  .stream()
+                  .map(clazz -> itemFactory.createType(DescriptorUtils.javaTypeToDescriptor(clazz)))
+                  .collect(Collectors.toList()));
         } catch (IOException e) {
           throw new RuntimeException(e);
         }
       }));
     }
-    builder.addToMainDexList(
-        inputApp.getMainDexClasses()
-            .stream()
-            .map(clazz -> itemFactory.createType(DescriptorUtils.javaTypeToDescriptor(clazz)))
-            .collect(Collectors.toList()));
   }
 
   private final class ClassReader {