在linux上運行java程序,直接用javac編譯,再用java運行就行了。但是在Android上,由於虛擬機和pc端的不同,所以操作方法也是不一樣的。
如果想在Android上運行Hello world!。則需要一下步驟。
/* File Name: Hello.java */
public class Hello
{
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
首先在pc上編譯: javac Hello.java
生成 Hello.class 文件。
然後執行下面的指令(Hello.class保存在/work目錄下):
dx --dex --output=Hello.jar Hello.class
(如果提示找不到dx指令,則需要設置一下環境變量。 . setenv)
生成Hello.jar文件。
在Android系統的控制檯上,運行下面指令中的一個即可運行java程序。
dalvikvm -cp /mnt/Hello.jar Hello
CLASSPATH=/mnt/Hello.jar app_process ./ Hello
當涉及到多個文件時:
/* File Name: Pack.java */
package a.b.c.d;
public class Pack
{
public static void main(String[] args) {
System.out.println("Pack Java!");
}
}
運行指令:
javac Pack.java -d . //在當前目錄下生成 a/b/c/d/Pack.class
java a.b.c.d.Pack //在pc上運行
dx --dex --output=pack.jar ./
dalvikvm -cp /mnt/pack.jar a.b.c.d.Pack
CLASSPATH=/mnt/pack.jar app_process ./ a.b.c.d.Pack
如果涉及到多個文件,則可以藉助Android.mk來實現。
/*
File Name:Android.mk
參考: frameworks/base/cmds/am/Android.mk
*/
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_MODULE := pack
include $(BUILD_JAVA_LIBRARY)
把代碼放到 framework/testing目錄下。,然後執行 mmm . 命令。 會生成一個 pack.jar
用 dalvikvm 或 app_process 兩種啓動方式來運行。
啓動方式的差別:
app_proces會創建兩個Binder線程: Binder_1, Binder_2