Back

android - dex2jar 报错: com.googlecode.d2j.DexException: not support version.

发布时间: 2021-03-17 00:17:00

参考: 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 等第三方包

Back