java生成smali

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

就可以了

猜你喜欢

转载自blog.csdn.net/momo_ibeike/article/details/80265698