问题背景:
在将dex文件转换为jar文件时,使用dex2jar-tools-2.1版本执行命令出现以下错误信息
~/Tool2/dex2jar-tools-2.1/dex-tools-2.1-SNAPSHOT$ ./d2j-dex2jar.sh classes.dex
dex2jar classes.dex -> ./classes-dex2jar.jar
com.googlecode.d2j.DexException: not support version.
at com.googlecode.d2j.reader.DexFileReader.<init>(DexFileReader.java:149)
at com.googlecode.d2j.reader.DexFileReader.<init>(DexFileReader.java:209)
at com.googlecode.d2j.reader.MultiDexFileReader.open(MultiDexFileReader.java:36)
at com.googlecode.dex2jar.tools.Dex2jarCmd.doCommandLine(Dex2jarCmd.java:105)
at com.googlecode.dex2jar.tools.BaseCmd.doMain(BaseCmd.java:290)
at com.googlecode.dex2jar.tools.Dex2jarCmd.main(Dex2jarCmd.java:33)
问题原因是当前用的 dex2jar 版本太老(2.1),不支持新的 Android dex 文件格式(Android 9+ / API 28+ 的 dex 版本)老 dex2jar 只能解析旧版 dex,新版 dex 直接报错。
直接下载 最新版 dex2jar,支持所有新版 dex。
一、获取源码
访问官方发布页面下载源码包:
https://github.com/pxb1988/dex2jar/releases
选择 Source code (tar.gz) 下载 dex2jar-2.4 版本。
二、解压源码
执行解压命令,获取源码目录:
tar -zxvf dex2jar-2.4.tar.gz
三、编译构建
进入源码根目录,执行编译脚本:
cd dex2jar-2.4
./gradlew distZip
四、提取工具包
编译完成后,进入工具分发目录,解压构建产物:
cd dex-tools/build/distributions
unzip dex-tools-2.x.zip
五、执行转换
进入工具目录,通过命令行将 APK 文件转换为 JAR 文件:
cd dex-tools-2.x
sh d2j-dex2jar.sh -f ~/path/to/apk_to_decompile.apk
说明:命令中需指定待转换 APK 的绝对路径,转换完成后,将在当前目录生成apk_to_decompile-dex2jar.jar输出文件。
4950

被折叠的 条评论
为什么被折叠?



