(Linux平臺)在Android中調用JNI

(需要使用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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章