本人博客原文:http://hubingforever.blog.163.com/blog/static/17104057920126166411775/
在Android中启动JAVA程序其实有很多种方式,现总结如下
一、在Android应用程序中发送
Intent启动Android应用程序 这个方式最简单,最常用。在此不在累述。关于Intent的更多内容请阅读《 Intent技术简介
》 二、在
shell控制台通过
am命令发送Intent来启动
Android应用程序 在Android的shell控制台通过am命令发送Intent来启动 Android应用程序 关于此的详细内容请参考《 Android命令am详解
》 三、 在shell控制台直接通过
davlikvm命令启动一个JAVA程序。 该方式有个天生的缺点,即在其中,很多Android的JNI无法调用。因为Android的很多JNI其实是需要手动注册的。 关于请参考《 基本Dalvik VM调用》
四、在
shell 控制台直接 通过运行 app_process 程序启动一个JAVA程序 在
app_process 程序中,他会对 Android的JNI进行手动注册的,能很好的使用Android的API,因此 通过运行 app_process 程序启动一个JAVA程序,是一个比较完美的方式。 app_process 程序是一个C程序,它的源码位于frameworks\base\cmds\app_process。 关于它的使用请参考
《 Android命令am详解
》以及shell脚本 frameworks\base\cmds\am\am和frameworks\base\cmds\pm\pm am脚本文件如下:
# Script to start "am" on the device, which has a very rudimentary # shell. # base=/system export CLASSPATH=$base/framework/am.jar exec app_process $base/bin com.android.commands.am.Am "$@" pm脚本文件如下: # Script to start "pm" on the device, which has a very rudimentary # shell. # base=/system export CLASSPATH=$base/framework/pm.jar exec app_process $base/bin com.android.commands.pm.Pm "$@" CLASSPATH 指定了你的程序的位置, com.android.commands.pm.Pm 则说明了程序的入口为 com.android.commands.pm.Pm ,即 入口函数 main()所在的 类, " $@ " 就是传递给main()函数的参数,只是这里 " $@ "本身又是个shell传入的参数而已 需要注意的是CLASSPATH中的文件必须是dalvik文件格式的,关于此的转换请参考《基本Dalvik VM调用》 当然CLASSPATH中的文件可以是apk文件,只是你的apk中至少应该有个拥有main()入口函数的类。
- ADB 命令大全
- Android(安卓)上移植 ghostscript-9.04 静态编译
- Android(安卓)学习笔记(一)
- android 用命令行打包生成 apk
- Android之Intent和Activity
- [置顶] Android常用命令
- 如何设置Android命令行环境变量
- Android中Activity启动模式详解
- 第15章 Android启动过程 [Android应用开发与系统改造实战]
随机推荐
-
安卓大佬力荐,送你一份超详细的Android学
-
Android(安卓)studio 快捷键,解决返回上次
-
Android的多任务之路
-
谷歌Google仍需提高Android的五个方面
-
Android采用HTML设计软件界面
-
React Native封装Android原生UI和Android
-
Android之网络丢包事件
-
Android开发工程师面试如何准备才能拿高
-
Android(安卓)开发艺术探索(终篇)
-
Android拼图游戏开发全纪录0