Android反编译将Smile代码转jar包时出现错误,java.lang.RuntimeException: can not merge I and Z

本文介绍了解决使用dex2jar-2.0工具转换smile代码为jar包时遇到的cannot merge I and Z错误的方法。错误源于int和boolean类型转换问题,常见于kotlin或新dx版本编译的代码。提供了一个已编译好的dex2jar版本下载,替换原有lib文件即可解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在我们使用dex2jar-2.0工具 将smile代码转换成jar包时,可能会出现以下错误:
java.lang.RuntimeException: can not merge I and Z,这是因为我们使用的是旧版的dex2jar

通过查看日志文件可以知道,这是com.googlecode.dex2jar.ir.TypeClass的merge问题。查看dex2jar源码后,可以确定这是int和boolean互相转换问题。在java里面,这两个类型是不能转换的。

问题可能来源:别人打包的代码并不一定使用java编写(kotlin)或者采用新的dx(d8)版本,这时编译的代码可能引入新的指令(不兼容java)。当然,有些是混淆目的(开源的话一般就不是啦)。

我们可以通过重新编译一个dex2jar来解决这个问题

下边是已经编译好的,欢迎下载:

下载地址:https://download.csdn.net/download/JiYaRuo/12570281

下载完成之后,解压,如下图所示

然后把lib下的所有文件,替换掉之前dex2jar-2.0下的lib文件,然后打开cmd命令

首先定位到dex2jar-2.0文件所在位置:cd C:\Users\Administrator\Desktop\jyr\android反编译三件套_\android反编译三件套\smali2jar\smali2jar\dex2jar-2.0

然后输入:d2j-dex2jar classes.dex,

就可以生成的classes-dex2jar.jar文件,就是我们需要的jar包啦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值