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
就可以了