範例:Android.mk編譯/執行Java程式(非APP)
1. Java程式碼
一個非常簡單的Java程式,放置在src/com/test/demo/HelloWorld.javapackage com.test.demo;
public class HelloWorld {
public static void main(String[] args){
System.out.println("Hello World");
}
}
2. 執行Java程式的sh檔
#!/system/bin/sh
base=/system
export CLASSPATH=$base/framework/JProg.jar
exec app_process $base/bin com.test.demo.HelloWorld "$@"
這個執行程式的sh檔案,其實是參照/system/bin/am所做的,依照你的需求可能會需要包含framework.jar
最後一行的com.test.demo.HelloWorld是隨著你的程式碼而改變的
3. 編譯用的Android.mk檔案
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_MODULE := JProg
ALL_DEFAULT_INSTALLED_MODULES += $(LOCAL_MODULE)
include $(BUILD_JAVA_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := runJProg
ALL_DEFAULT_INSTALLED_MODULES += $(LOCAL_MODULE)
LOCAL_SRC_FILES := runJProg
LOCAL_MODULE_CLASS := EXECUTABLES
LOCAL_MODULE_TAGS := optional
include $(BUILD_PREBUILT)
會編譯出一個jar檔JProg.jar和runJProg
4. 在目標裝置中執行Java程式
編譯後會在out目錄下可以找到
system/framework/JProg.jar
system/bun/runJProg
Android 7.0之後版本可能還會輸出odex檔案
system/framework/oat/arm/JProg.odex
只要將上述檔案都推入目標裝置對應位置,增加system/bun/runJProg的執行權限,就可以用runJProg跑Java程式啦!
留言