Android Dalvikvm的使用

    当java程序运行时,都是由一个虚拟机来解释Java的字节码,它将这些字节码翻译成本地CPU的指令,然后执行。对于Java程序而言,负责解释并执行的就是一个虚拟机,而对于Linux而言,这个虚拟机只是运行于其上的一个应用进程,跟一个Hello World没有本质区别。所以启动一个虚拟机的方法就跟启动任何一个可执行程序的方法是相同的。就是在命令行输入可执行程序的名称,并在参数中指定要执行的Java类。

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

1.新建Dalvikvm.java,内容如下:
public class Dalvikvm {
    public static void main(String[] args) {
        int a = 3;
        int b = 7;
        System.out.println(a + " + " + b + "=" + add(a, b));
    }

    private static int add(int a, int b) {
        return a + b;
    }
}
2.编译该文件,生成.jar,如下命令所示:
//生成Dalvikvm.clss
javac Dalvikvm.java 
//生成test.jar
dx --dex --output=test.jar Dalvikvm.class
    dx工具位于SDK的build-tools里面,作用是将.class转换为dex文件,因为Dalivk虚拟机所执行的程序不是标准的jar文件,而是将jar文件通过特别转换以提高执行效率,而转换后的文件就是dex文件。

3.将生成的test.jar push到Android手机的/data/app 目录下,并且用dalvikvm执行该jar
adb push test.jar /data/app
adb shell
cd /data/app
dalvikvm -cp test.jar Dalvikvm
4.查看输出结果

这里写代码片

关于/data/app目录是每个应用程序安装后都会在这个目录下创建一个apk副本,apk运行的时候读取的一些应用内资源文件就是从这个apk文件里面获取的,对于本demo不一定要放在/data/app下,其他path下也可以。

总结一下dalvikvm的作用就是创建一个虚拟机并执行指定参数中的java类。

dvz的作用也是创建一个虚拟机并执行指定参数中的java类,区别在于该进程中已经预装了Framework的大部分资源。

你可能感兴趣的:(Android)