android - dex2jar 报错: com.googlecode.d2j.DexException: not support version.
访问量: 1710
参考: https://github.com/pxb1988/dex2jar/issues/319
以及 https://stackoverflow.com/questions/49606951/dexexception-not-support-version/66665612#66665612
结论:
1. 见第三点. 目前dex2jar 仅仅支持 Android 8. ( dex 039 ) , android 9, android 10 是不支持的.
2. dex2jar 官方已经不再维护
3. 下载 这个patch https://github.com/DexPatcher/dex2jar/releases
典型报错
com.googlecode.d2j.DexException: not support version.
at com.googlecode.d2j.reader.DexFileReader.(DexFileReader.java:151) at com.googlecode.d2j.reader.DexFileReader.(DexFileReader.java:211) at com.googlecode.dex2jar.tools.Dex2jarCmd.doCommandLine(Dex2jarCmd.java:104) at com.googlecode.dex2jar.tools.BaseCmd.doMain(BaseCmd.java:288) at com.googlecode.dex2jar.tools.Dex2jarCmd.main(Dex2jarCmd.java:32)
使用bvi查看, 发现是 039 开头
00000000 64 65 78 0A 30 33 39 00 43 CC A4 B9 D7 A8 14 A2 F3 44 A5 CC 0A CB 86 A2 11 6D 47 B4 01 BD 3F 60 dex.039.C........D.......mG...?` 00000020 0C 7C 4B 00 70 00 00 00 78 56 34 12 00 00 00 00 00 00 00 00 30 7B 4B 00 8F 86 00 00 70 00 00 00 .|K.p...xV4.........0{K.....p...
039, 038, 037 都不行.
改成 036, 035都可以.
深层次原因:
1. 官方网站的版本最多支持到 036.
2. 想要支持 android 8 ( dex.038), android 9 , 10 (dex.039) , 需要使用这个版本: https://github.com/DexPatcher/dex2jar/releases
下面是一个经典例子
-rw-r--r-- 1 siwei siwei 1328 3月 17 09:15 0x74a96c6c30.dex OK, dex39 android.ext.shared; -rw-r--r-- 1 siwei siwei 28160 3月 17 09:15 0x74a97996dc.dex 报错, dex38: java.lang.IndexOutOfBoundsException java.nio.Buffer.checkIndex -rw-r--r-- 1 siwei siwei 15948 3月 17 09:15 0x74a9831ff0.dex 报错, dex39: java.lang.ArrayIndexOutOfBoundsException: 0, at org.objectweb.asm.Type.getType(Type.java:448) -rw-r--r-- 1 siwei siwei 6991268 3月 17 09:15 0x7529208000.dex OK , dex35, com.vip.lueluelue 和 okhttp3 等一票工具 -rw-r--r-- 1 siwei siwei 6588576 3月 17 09:15 0x75298ba000.dex OK , dex35, 一票工具,tencent, mob 等, -rw-r--r-- 1 siwei siwei 45616 3月 17 09:15 0x752b9b8030.dex ok , dex35, qihoo, 加上的壳 -rw-r--r-- 1 siwei siwei 45616 3月 17 09:15 0x752da01540.dex ok , dex35, qihoo, 加上的壳 -rw-r--r-- 1 siwei siwei 284 3月 17 09:15 0x752e50fa8e.dex ok , dex35, empty class -rw-r--r-- 1 siwei siwei 7019764 3月 17 09:15 0x757dfe6ce0.dex 报错, dex35, java.lang.IndexOutOfBoundsException at java.nio.Buffer.checkIndex(Buffer.java:551) -rw-r--r-- 1 siwei siwei 1756 3月 17 09:15 0x758a600010.dex ok, dex39, chromium等第三方包 -rw-r--r-- 1 siwei siwei 431528 3月 17 09:15 0x758e83c02c.dex ok, dex39, android.net.ssl, conscrpt等第三方包 -rw-r--r-- 1 siwei siwei 1209508 3月 17 09:15 0x7595cf10b8.dex ok, dex39, apache等第三方包 -rw-r--r-- 1 siwei siwei 1398708 3月 17 09:15 0x7595e1902c.dex ok, dex39, bouncycastle等第三方包 -rw-r--r-- 1 siwei siwei 3298760 3月 17 09:15 0x7595f6f4b4.dex ok, dex39, android, java, javax, libcore等第三方包 -rw-r--r-- 1 siwei siwei 4946956 3月 17 09:15 0x7596295554.dex ok, dex39, java, javax, sun, jdk.net等第三方包 -rw-r--r-- 1 siwei siwei 60668 3月 17 09:15 0x761acfd02c.dex ok, dex39, android.media 等第三方包 -rw-r--r-- 1 siwei siwei 409152 3月 17 09:15 0x761c04302c.dex ok, dex39, okhttp 等第三方包