2010年11月27日 星期六

android 使用JNI

jni/
需要有Android.mk和.c檔

Android.mk
第一個編譯的檔案需有#include
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := Module名字
LOCAL_SRC_FILES := 編譯的檔案
include $(BUILD_SHARED_LIBRARY)
兩個以上要編譯的檔案添加
include $(CLEAR_VARS)
LOCAL_MODULE := Module名字

LOCAL_SRC_FILES := 編譯的檔案
LOCAL_STATIC_LIBRARIES := 第一個Module名字
include $(BUILD_SHARED_LIBRARY)

.c檔需加入
#include
而function命名規則
j回傳的資料型態 Java_package名稱_java的class名稱_C的function名稱( JNIEnv* env,jobject thiz,j需傳入的資料 )

到jni目錄用NDK編譯後將libs添加到專案根目錄

src/
主java的class
public native 回傳的資料型態 C的function名稱();
呼叫function前需定義System.loadLibrary("module name");