(需要使用NDK工具編譯生成.so文件,所以請先下載NDK,
附地址: http://wear.techbrood.com/tools/sdk/ndk/index.html ,請選擇對應平臺下載)
一、編寫APP時,使用:
static {
System.loadLibrary("native庫名,一般爲C/C++文件名");
}
二、聲明native方法,如:
public native String getJNIString();
三、編譯一次
四、進入APP源碼src文件夾,在終端執行指令:
javah 包名.類名
(例如 :javah com.example.jnidemo.JNITest)
執行後,src目錄下會生成.h結尾的頭文件。文件內容已自行生成,主要包含了步驟二中聲明的native方法在JNI下的對應函數名,如:
jstring JNICALL Java_com_liyd_jnidemo_JNITest_getJNIString (JNIEnv *, jobject);
(此方法即我們源文件要實現的方法)
五、在APP項目根目錄下創建jni文件夾,在其中創建C/C++源文件、Android.mk,(此外可選建Application.mk)。
1.源文件中實現步驟二中所述函數。
2.Android.mk有5個必須用到的變量:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := 模塊名 (,模塊名是唯一的,比如:jni-demo)
LOCAL_SRC_FILES := 源文件 (可以有多個,使用空格或Tab來分隔,比如:jni-demo.c jni-test.c)
include $(BUILD_SHARED_LIBRARY)六、在linux終端中,進入步驟五中創建的jni文件夾路徑下,使用native工具編譯,生成.so文件。
直接執行指令(ndk-build是一個ndk中一個腳本文件)爲:
$ndk根目錄路徑/ndk-build
即可自動生成.so等文件。
七、再次編譯APP,順利運行。
【附上我寫的一個極簡小demo地址: http://download.csdn.net/detail/u013403478/9590098 】
轉載請註明出處:http://blog.csdn.net/u013403478/article/details/52068095