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 b9c6ec9..099264c 100644
--- a/dx/src/com/android/dx/command/dexer/Main.java
+++ b/dx/src/com/android/dx/command/dexer/Main.java
@@ -521,6 +521,7 @@
 
         anyFilesProcessed = false;
         String[] fileNames = args.fileNames;
+        Arrays.sort(fileNames);
 
         // translate classes in parallel
         classTranslatorPool = new ThreadPoolExecutor(args.numThreads,
@@ -667,7 +668,7 @@
     private static void processOne(String pathname, FileNameFilter filter) {
         ClassPathOpener opener;
 
-        opener = new ClassPathOpener(pathname, false, filter, new FileBytesConsumer());
+        opener = new ClassPathOpener(pathname, true, filter, new FileBytesConsumer());
 
         if (opener.process()) {
           updateStatus(true);