-
-
[旧帖] [原创]使用 dalvikvm 执行一个运行于命令行的 Hello World 0.00雪花
-
发表于: 2014-2-16 22:40 3765
-
Windows 操作系统也有五花八门的应用 ,可是想当年学习编程语言的第一个程序,却是在 Turbo C 蓝漆漆的界面里笨拙地敲一个 Hello World 程序 ,然后又在黑漆漆的命令行里打印出的一行输出结果 ,“Hello World”。
Android 上也能实现类似的效果 ,可以使用 dalvikvm 执行一个运行于命令行的 Hello World 。
简要的过程如下:
写代码 Hello.java
编译成 Android Dalvik Virtual Machine 的可执行文件 Hello.dex
使用 ADB 运行测试
内容主要参考 Android 4.4 源码里 dalvik / docs / hello-world.html 文件 。
1. 本文的测试环境
Ubuntu 12.04 64-bit
JDK 1.6
安装 Android SDK,并安装 Android SDK build_tools , 最新版是 19.0.1
具有 Root 权限的 ADB shell
2. 创建 java 源文件 ,内容如下
3.编译
(1)编译成 java class 文件
执行命令 : javac Hello.java
编译完成后 ,目录下生成 Hello.class 文件 。可以使用命令 java Hello 来测试下 ,会输出代码中的 “ Hello, Android!” 的字符串 。
(2) 编译成 dex 文件
编译工具在 Android SDK 的路径如下 ,其中 19.0.1 是Android SDK build_tools 的版本 ,请按照在本地安装的 build_tools 版本来 。建议该路径加载到 PATH 路径下 ,否则引用 dx 工具时需要使用绝对路径 。
./build-tools/19.0.1/dx
执行命令 : dx --dex --output=Hello.dex Hello.class
编译正常会生成 Hello.dex 文件 。
4. 使用 ADB 运行测试
测试命令和输出结果如下 :
$ adb root
$ adb push Hello.dex /sdcard/
$ adb shell
root@maguro:/ # dalvikvm -cp /sdcard/Hello.dex Hello
Hello, Android!
说明 :
(1)测试环境使用真机和 Android 虚拟机都可以的 。核心的命令是
dalvikvm -cp /sdcard/Hello.dex Hello
-cp 是 class path 的缩写 ,后面的 Hello 是要运行的 Class 的名称 。网上有描述说输入 dalvikvm --help 可以看到 dalvikvm 的帮助文档 ,但是在 Android4.4 的官方模拟器和自己的手机上测试都提示找不到 Class 路径 ,在Android 老的版本 ( 4.3 ) 上测试还是有输出的 。
(2)因为命令在执行时 , dalvikvm 会在 /data/dalvik-cache/ 目录下创建 .dex 文件 ,因此要求 ADB 的执行 Shell 对目录 /data/dalvik-cache/ 有读、写和执行的权限 ,否则无法达到预期效果 。
Android 上也能实现类似的效果 ,可以使用 dalvikvm 执行一个运行于命令行的 Hello World 。
简要的过程如下:
写代码 Hello.java
编译成 Android Dalvik Virtual Machine 的可执行文件 Hello.dex
使用 ADB 运行测试
内容主要参考 Android 4.4 源码里 dalvik / docs / hello-world.html 文件 。
1. 本文的测试环境
Ubuntu 12.04 64-bit
JDK 1.6
安装 Android SDK,并安装 Android SDK build_tools , 最新版是 19.0.1
具有 Root 权限的 ADB shell
2. 创建 java 源文件 ,内容如下
public class Hello { public static void main(String[] argc) { System.out.println("Hello, Android!\n"); } }
3.编译
(1)编译成 java class 文件
执行命令 : javac Hello.java
编译完成后 ,目录下生成 Hello.class 文件 。可以使用命令 java Hello 来测试下 ,会输出代码中的 “ Hello, Android!” 的字符串 。
(2) 编译成 dex 文件
编译工具在 Android SDK 的路径如下 ,其中 19.0.1 是Android SDK build_tools 的版本 ,请按照在本地安装的 build_tools 版本来 。建议该路径加载到 PATH 路径下 ,否则引用 dx 工具时需要使用绝对路径 。
./build-tools/19.0.1/dx
执行命令 : dx --dex --output=Hello.dex Hello.class
编译正常会生成 Hello.dex 文件 。
4. 使用 ADB 运行测试
测试命令和输出结果如下 :
$ adb root
$ adb push Hello.dex /sdcard/
$ adb shell
root@maguro:/ # dalvikvm -cp /sdcard/Hello.dex Hello
Hello, Android!
说明 :
(1)测试环境使用真机和 Android 虚拟机都可以的 。核心的命令是
dalvikvm -cp /sdcard/Hello.dex Hello
-cp 是 class path 的缩写 ,后面的 Hello 是要运行的 Class 的名称 。网上有描述说输入 dalvikvm --help 可以看到 dalvikvm 的帮助文档 ,但是在 Android4.4 的官方模拟器和自己的手机上测试都提示找不到 Class 路径 ,在Android 老的版本 ( 4.3 ) 上测试还是有输出的 。
(2)因为命令在执行时 , dalvikvm 会在 /data/dalvik-cache/ 目录下创建 .dex 文件 ,因此要求 ADB 的执行 Shell 对目录 /data/dalvik-cache/ 有读、写和执行的权限 ,否则无法达到预期效果 。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
看原图
赞赏
雪币:
留言: