当Java程序运行时,都是由一个虚拟机来解释Java的字节码,它将这些字节码翻译成本地CPU的指令码,然后执行。对Java程序而言,负责解释并执行的就是一个虚拟机,而对于Linux而言,这个进程只是一个普通的进程,它与一个只有一行代码的Hello World可执行程序无本质区别。所以启动一个虚拟机的方法就跟启动任何一个可执行程序的方法是相同的,那就是在命令行下输入可执行程序的名称,并在参数中指定要执行的Java类。
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程序一样。
相关推荐
1. **dalvikvm.jar**: 这个jar包包含了Dalvik虚拟机的类库,Dalvik是早期Android系统使用的虚拟机,用于运行优化过的字节码。在调试过程中,理解Dalvik如何解析和执行代码对于调试性能问题至关重要。 2. **android....
首先,需要获取设备的root权限,然后可以使用`dalvikvm`或`art`工具进行相关操作。例如,`/system/bin/dex2oat`命令可以用来执行dex到oat的转换,`/system/bin/oatdump`可以查看.oat文件的详细信息。 4. **odex优化...
它能够获取所有系统服务的详细状态,这对于调试和性能分析非常有用。例如: - `dumpsys` 获取所有系统服务的诊断输出。 以上只是部分示例,实际上,TLDR页面覆盖了大量的其他命令和使用场景,对于开发者和系统管理...
- **转换命令**:将原始.hprof文件复制到`/ANDROID_SDK/tools`目录下,并执行命令`hprofconv xxx.hprof yyy.hprof`,其中`xxx.hprof`为原始文件,`yyy.hprof`为转换后的文件。 - **打开转换后的文件**:使用MAT...
4. **使用`dalvikvm-heap`权限**:在AndroidManifest.xml中添加`<uses-permission android:name="android.permission.DUMP" />`,这允许应用获取设备状态信息,可能有助于执行更复杂的shell命令。 5. **使用AIDL...
在Android开发过程中,Log工具是调试和排查问题的关键助手。本文将通过一个具体的例子来讲解如何利用Log分析和解决Android应用程序中的问题,特别是在Message模块出现ANR(Application Not Responding)的情况。 ...
当你双击这个文件,它会调用相应的Java命令来运行`Traceview`,通常这个命令会包含`java -jar traceview.jar`这样的参数。 `lib`目录则可能包含了`Traceview`运行所需要的库文件,这些文件可能是`.jar`格式的Java...
要运行上述编写的测试用例,可以通过Android调试桥(ADB)命令来启动Dalvik虚拟机执行测试。例如: ```bash adb shell exec dalvikvm -Xbootclasspath:p/system/framework/core.jar:/system/framework/framework.jar:...
TraceView是Android系统中一个强大的性能分析工具,主要用于调试应用程序的性能问题,特别是对于CPU密集型的任务和内存使用情况有着详细的追踪能力。它能够提供细粒度的函数调用时间线,帮助开发者找出代码中的瓶颈...
程序可以采用 JAVA 开发,但是因为它的虚拟机 (Virtual Machine) Dalvik ,是将 JAVA 的 bytecode 转成 自 己的格式,回避掉需要付给 SUN 有关 JAVA 的授权费用。 对手机制造者的影响 � Android 是款开源的移动计算...