1. 程式人生 > >Android == 在Android系統上執行JAVA程式

Android == 在Android系統上執行JAVA程式

在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