Ensure deterministic multidex partitioning

This is done by sorting inputs before processing them.

Bug: 23305646

Change-Id: Ia55c481f4eb342bc925bc100299324ea470bf9a0
diff --git a/dx/src/com/android/dx/command/dexer/Main.java b/dx/src/com/android/dx/command/dexer/Main.java
index 4a3d195..ac4d8c2 100644
--- a/dx/src/com/android/dx/command/dexer/Main.java
+++ b/dx/src/com/android/dx/command/dexer/Main.java
@@ -473,6 +473,7 @@
 
         anyFilesProcessed = false;
         String[] fileNames = args.fileNames;
+        Arrays.sort(fileNames);
 
         if (args.numThreads > 1) {
             threadPool = Executors.newFixedThreadPool(args.numThreads);
@@ -594,7 +595,7 @@
     private static void processOne(String pathname, FileNameFilter filter) {
         ClassPathOpener opener;
 
-        opener = new ClassPathOpener(pathname, false, filter,
+        opener = new ClassPathOpener(pathname, true, filter,
                 new ClassPathOpener.Consumer() {
 
             @Override