dalvikvm

dalvikvm的作用就是创建一个虚拟机并执行参数中指定的Java类,下面以一个例子来说明该程序的使用方法。

首先新建一个Foo.java文件,如以下代码所示:

class Foo {  
    public static void main(String[] args) {  
        System.out.println("Hello dalvik"); 
    } 

然后编译该文件,并生成Jar文件,如以下代码所示:

$ javac Foo.java 
$ PATH=/Users/keyd/android/out/host/darwin-x86/bin:$PATH 
$ dx --dex --output=foo.jar Foo.class 
dx工具的作用是将.class转换为dex文件,因为Dalvik虚拟机所执行的程序不是标准的Jar文件,而是将Jar文件经过特别的转换以提高执行效率,而转换后的文件就是dex文件。dx工具是Android源码的一部分,其路径是在out目录下,因此在执行dx之前,需要添加该路径。

dx执行时,--output参数用于指定Jar文件的输出路径,注意该Jar文件内部包含已经不是纯粹的.class文件,而是dex格式文件,Jar仅仅是zip包。

生成了该Jar包后,就可以把该Jar包push到设备中,并执行,如以下代码所示:

$ adb push foo.jar /data/app 
$ adb shell dalvikvm -cp /data/app/foo.jar Foo 
Hello dalvik 
以上命令首
以上命令首先将该Jar包push到/data/app目录下,因为该目录一般用于存放应用程序,接着使用adb shell执行dalvikvm程序。dalvikvm的执行语法如下:



dalvikvm -cp 类路径 类名
从这里也可以感觉到,dalvikvm的作用就像在PC上执行Java程序一样。


如果是java 7,javac 一定要编译成java6 的字节码,不然dx不识别
javac -source 6 -target 6 Foo.java

猜你喜欢

转载自asdf314159265.iteye.com/blog/1974536
今日推荐