TShopping

標題: 如何在Android中啟動JAVA程序 [打印本頁]

作者: woff    時間: 2013-10-19 17:14
標題: 如何在Android中啟動JAVA程序
在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腳本文件如下:


  1. # Script to start "am" on the device, which has a very rudimentary
  2. # shell.
  3. #
  4. base=/system
  5. export CLASSPATH=$base/framework/am.jar
  6. exec app_process $base/bin com.android.commands.am.Am "$@"
複製代碼




pm腳本文件如下:


  1. # Script to start "pm" on the device, which has a very rudimentary
  2. # shell.
  3. #
  4. base=/system
  5. export CLASSPATH=$base/framework/pm.jar
  6. 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()入口函數的類。






歡迎光臨 TShopping (http://www.tshopping.com.tw/) Powered by Discuz! X3.2