Fix Dexdeps to accept dex version 037

Minor renaming and comments for clarity.

bug:28210069
Change-Id: I7bc24e5bfa708df5156e30f2e93528d70de30069
diff --git a/tools/dexdeps/src/com/android/dexdeps/DexData.java b/tools/dexdeps/src/com/android/dexdeps/DexData.java
index 89dff18..6f4fe80 100644
--- a/tools/dexdeps/src/com/android/dexdeps/DexData.java
+++ b/tools/dexdeps/src/com/android/dexdeps/DexData.java
@@ -18,6 +18,7 @@
 
 import java.io.IOException;
 import java.io.RandomAccessFile;
+import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
 
 /**
@@ -66,8 +67,8 @@
      * Verifies the given magic number.
      */
     private static boolean verifyMagic(byte[] magic) {
-        return Arrays.equals(magic, HeaderItem.DEX_FILE_MAGIC) ||
-            Arrays.equals(magic, HeaderItem.DEX_FILE_MAGIC_API_13);
+        return Arrays.equals(magic, HeaderItem.DEX_FILE_MAGIC_v035) ||
+            Arrays.equals(magic, HeaderItem.DEX_FILE_MAGIC_v037);
     }
 
     /**
@@ -538,10 +539,16 @@
         public int classDefsSize, classDefsOff;
 
         /* expected magic values */
-        public static final byte[] DEX_FILE_MAGIC = {
-            0x64, 0x65, 0x78, 0x0a, 0x30, 0x33, 0x36, 0x00 };
-        public static final byte[] DEX_FILE_MAGIC_API_13 = {
-            0x64, 0x65, 0x78, 0x0a, 0x30, 0x33, 0x35, 0x00 };
+        public static final byte[] DEX_FILE_MAGIC_v035 =
+            "dex\n035\0".getBytes(StandardCharsets.US_ASCII);
+
+        // Dex version 036 skipped because of an old dalvik bug on some versions
+        // of android where dex files with that version number would erroneously
+        // be accepted and run. See: art/runtime/dex_file.cc
+
+        // V037 was introduced in API LEVEL 24
+        public static final byte[] DEX_FILE_MAGIC_v037 =
+            "dex\n037\0".getBytes(StandardCharsets.US_ASCII);
         public static final int ENDIAN_CONSTANT = 0x12345678;
         public static final int REVERSE_ENDIAN_CONSTANT = 0x78563412;
     }