dex文件在模拟器测试运行
1. java文件编译成dex文件
新建一个名为“Hello.java”的文件,将以下内容保存。public class Hello{ public int foo(int a,int b){ return (a+b)*(a-b); } public static void main(String[] argc){ Hello hello=new Hello(); System.out.println(hello.foo(5,3)); } }
打开命令提示符,执行“javac Hello.java”编译为Hello.class文件,再执行命令“dx --dex --output=Hello.dex Hello.class”生成dex文件。(详见外编)
2.在模拟器上测试运行
a)连接夜神模拟器
打开adb服务,查看设备列表,假如出现本地adb版本和模拟器版本不匹配,可通过手动复制sdk文件中三个文件到模拟器使相同。
执行命令“adb push Hello.dex /sdcard”把文件Hello.dex发送到模拟器sdcard目录下:
再执行命令“adb shell dalvikvm -cp /sdcard/Hello.dex Hello”后输出结果为:
外编
a)smali文件和dex文件转换
两种文件可通过samli.jar和baksmali.jar实现互转,在官网下载后,可进行环境变量配置方便在命令行操作。
smali文件转dex文件: 先查看本版本的命令,最新版本和以往版本命令不同,输错命令会提示以下信息。
执行命令:java -jar D:/Android/smali.jar a D:/Android/Hello.smali
dex文件转smali文件: 执行命令:java -jar D:/Android/baksmali.jar d D:/Android/Hello.dex -o D:/Android/
在D:/Android/目录下就会生成smali文件。
b)Java文件->dex文件
如开头步骤1所描述,值得注意的是dx运行的是SDK/build-tools目录下dx.bat,之前没有进行环境变量配置的,可使用“cd /d d”从C盘转到D盘,再进到目录下执行,可把class文件移到dx.bat目录下。
c)smali文件编写
可用直接创建扩展名为.smali的文件,或者使用编辑界面更直观的,可用AndroidKiller打开空的smali文件进行编辑,但不能直接编译。
d)tip
在Android Studio的Terminal窗口也可进行一系列操作。