java生成smali

本文介绍了将Java代码转换为Smali的过程,包括生成class文件、使用dx工具转换为dex文件,以及从dex文件得到Smali代码。在转换过程中,解决了一个关于类包名路径的问题,即在com上一级目录进行操作。

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

Smali

Smali是Android系统中Dalvik虚拟机指令语言

java代码转smali代码

第一步:生成class文件

javac Demo.class

第二步:class转成dex文件,android-sdk\build-tools\xx.xx.xx\lib下提供了dx工具。

java -jar dx.jar --dex --output=Demo.dex Demo.class

第三步:dex转成smali文件

java -jar baksmali.jar Demo.dex

会在当前目录生成out目录,里面有我们的smali文件

遇到的问题

生成dex时:

PARSE ERROR:
class name (com/stv/test/Demo) does not match path (Demo.class)
...while parsing Demo.class
1 error; aborting

我在AS中写Java文件时类是带有包名的。这样生成的dex时提示class是带包名路径的,所以在com的上一级目录:

java -jar /Users/leeco/Library/Android/sdk/build-tools/26.0.2/lib/dx.jar --dex --output=Demo1.dex com/stv/test/Demo.class

就可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值