Dalvik虚拟机相关的可执行程序
當Java程序運行時,都是一個虛擬機解釋java的字節碼,將這些字節碼翻譯成本地CPU的指令嗎,然后執行。對Java程序而言,負責解釋并執行的就是一個虛擬機。
? ? ? ?dalvikvm的作用就是創建一個虛擬機并執行參數中指定的Java類,說明該程序的使用方法:
? ? 1.首先新建一個名為Foo.java的文件
? ? ? ? ? class Foo{
? ? ? ? ? ? ? ? ? ? ?public static void main(String[] args){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? sysout("hello dalvik");
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? }
? ?2.然后編譯文件Foo.java并生成Jar文件
? ? ? ? ? ? ? ?javac Foo.java
? ? ? ? ? ? ? ?$Path=
? ? ? ? ? ? ? ?$dx --dex --output=foo.jar Foo.class
dx工具的作用是將.class轉換為.dex文件,因為Dalvik虛擬機所執行的程序不是標準的Jar文件,而是將Jar文件轉換以提高執行效率,而轉換后的文件就是dex文件。
2.dvz
? ? dvz的作用是從Zygote進程中孵化出一個新的進程,新的進程也是一個Dalvik虛擬機。
? ? 1.dvz -classpath 包名稱 類名
? ? 我們不能再函數Main()內部構造一個Welcome對象的方法達到運行該APK的目的。
3. app_process
? ?Framwork在啟動時需要加載并運行如下兩個類:
? ? ?ZygoteInit.java ? SystemServer.java ,系統提供了一個app_process進程,該進程會自動運行這兩個類,app_process的本質就是使用dalvikvm啟動ZygoteInit.java。并在啟動收加載Framework中的大部分類和資源。
2.接下來app_process中是如何創建虛擬機并執行指定的class文件的。其源代碼在文件frameworks/base/cmds/app_main.cpp中,該文件中的關鍵代碼又兩處:
1.先創建一個AppRutime對象
2.調用runtime的start()方法指定的class
總結
以上是生活随笔為你收集整理的Dalvik虚拟机相关的可执行程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Dalvik Vm架构
- 下一篇: 启动zygote