开发 Standalone Android Java 应用程序
2013-05-27 21:18
295 查看
转载:/article/9593924.html
一般来说,我们开发的 Android 应用程序都是基于 Activity 的,由 Android 系统来管理程序的生命周期;但是,有的时候,我们也想自己来控制程序的流程。例如,如果只是开发一个类似 /system/bin/pm 那样的 console 应用程序,用 Activity 就不合适了。这里我称这种自行控制流程的程序为 Standalone 的 Android 程序。
开发的方法和开发普通的 Java 应用程序并没有太大区别。例如,我们以 Java 的 Hello, world! 程序为例:
public class Test {
public static void main(String[] args) {
System.out.println("Hello, world!/r/n");
}
}
我们用 javac 来编译它就可以生成 .class 文件了:
javac Test.java
虽然这个时候我们运行 java Test 就已经可以运行这个程序了,但是对于 Android 来说,还需要将其转化成 dex 文件。我们可以用 Android SDK 里面的 dx 工具来做这件事情:
<sdk path>/build-tools/17.0.0/dx --dex --output=classes.jar Test.class
这里说明一下 dx 工具的用法。dx --dex 的意思是把 .class 文件转换成 dex 格式,同时如果 --output 指定的文件名的扩展名是 .jar 的话,dx 工具还会替你打包成 jar 文件。这个命令执行完之后,我们就得到了一个 classes.jar 文件,用 jar tvf classes.jar 可以看到里面的文件:
72 Thu Dec 23 18:29:02 CST 2010 META-INF/MANIFEST.MF
956 Thu Dec 23 18:29:02 CST 2010 classes.dex
现在把这个 classes.jar 文件上传到手机上:
adb push classes.jar /sdcard/
用虚拟机就可以运行了:
/system/bin/dalvikvm -classpath /sdcard/classes.jar Test
这是直接调用 Dalvik 虚拟机,指定其运行 Test 类的 main() 入口函数。
如果要用 Zygote 服务来管理我们的应用程序,可以用 app_process 来启动,例如:
[python] view
plaincopy
# 设置 CLASSPATH
export CLASSPATH=/sdcard/classes.jar
# app_process <working dir> <class name>
app_process /sdcard Test
一般来说,我们开发的 Android 应用程序都是基于 Activity 的,由 Android 系统来管理程序的生命周期;但是,有的时候,我们也想自己来控制程序的流程。例如,如果只是开发一个类似 /system/bin/pm 那样的 console 应用程序,用 Activity 就不合适了。这里我称这种自行控制流程的程序为 Standalone 的 Android 程序。
开发的方法和开发普通的 Java 应用程序并没有太大区别。例如,我们以 Java 的 Hello, world! 程序为例:
public class Test {
public static void main(String[] args) {
System.out.println("Hello, world!/r/n");
}
}
我们用 javac 来编译它就可以生成 .class 文件了:
javac Test.java
虽然这个时候我们运行 java Test 就已经可以运行这个程序了,但是对于 Android 来说,还需要将其转化成 dex 文件。我们可以用 Android SDK 里面的 dx 工具来做这件事情:
<sdk path>/build-tools/17.0.0/dx --dex --output=classes.jar Test.class
这里说明一下 dx 工具的用法。dx --dex 的意思是把 .class 文件转换成 dex 格式,同时如果 --output 指定的文件名的扩展名是 .jar 的话,dx 工具还会替你打包成 jar 文件。这个命令执行完之后,我们就得到了一个 classes.jar 文件,用 jar tvf classes.jar 可以看到里面的文件:
72 Thu Dec 23 18:29:02 CST 2010 META-INF/MANIFEST.MF
956 Thu Dec 23 18:29:02 CST 2010 classes.dex
现在把这个 classes.jar 文件上传到手机上:
adb push classes.jar /sdcard/
用虚拟机就可以运行了:
/system/bin/dalvikvm -classpath /sdcard/classes.jar Test
这是直接调用 Dalvik 虚拟机,指定其运行 Test 类的 main() 入口函数。
如果要用 Zygote 服务来管理我们的应用程序,可以用 app_process 来启动,例如:
[python] view
plaincopy
# 设置 CLASSPATH
export CLASSPATH=/sdcard/classes.jar
# app_process <working dir> <class name>
app_process /sdcard Test
相关文章推荐
- 开发 Standalone Android Java 应用程序
- 开发 Standalone Android Java 应用程序
- Android(java)学习笔记221:开发一个多界面的应用程序之不同界面间互相传递数据(短信助手案例)
- Android(java)学习笔记217:开发一个多界面的应用程序之清单文件
- [置顶] Android开发之获取APP的应用程序名称以及版本名称信息java工具类
- Android手机应用程序开发环境配置(Eclipse+Java+ADT)
- Android(java)学习笔记222:开发一个多界面的应用程序之不同界面间互相传递数据(短信助手案例的优化:请求码和结果码)
- Android(java)学习笔记219:开发一个多界面的应用程序之两种意图
- Android(java)学习笔记218:开发一个多界面的应用程序之人品计算器的简单实现
- Android(java)学习笔记220:开发一个多界面的应用程序之界面间数据传递
- Android HAL开发之Java应用程序直接调用JNI库
- 从Android java 中调用Flex开发的应用程序
- Android开发之获取APP的应用程序名称以及版本名称信息java工具类
- 开发问题及解决 java.lang.ClassCastException:android.widget.LinearLayout$LayoutParams
- 最快速的Android开发环境搭建ADT-Bundle及Hello World 分类: JAVA 2015-01-10 17:59 429人阅读 评论(0) 收藏
- C#/mono开发Android应用程序入门(二)-第一个应用程序(Hello World)
- Eclipse开发Android应用程序入门
- 〖Linux〗使用Qt5.2.0开发Android的NDK应用程序
- Android开发Java命名规则
- 在Windows上搭建Android的JAVA开发环境图文教程(Eclipse版本)