Android JNI HelloWorld實現

  1. 建立一個JNIDemo的Android工程
  2. 在項目下建立一個文件夾jni。(注意必須是jni目錄)
  3. 在jni目錄下建立兩個文件:Android.mk 和 first_jni.c(.c文件的名字能夠任意)
  4. 編寫Android.mk文件:(參見Demo當中的Androd.mk文件)
    • LOCAL_MODULE := firstjni (決定編譯出來的so文件的名字)
    • LOCAL_SRC_FILES := first_jni.c (指定須要編譯的文件)
  5. 在src當中建立java文件,此爲與so庫對應的接口。(如當前Demo當中的FirstJNI.java)

注意:java

  • 必須包含一個static的靜態代碼塊。用於加載so庫。
  • 經過natvie聲明so當中定義的接口
  1. 在.c文件當中實現接口java中定義的方法

    注意:git

    • .c文件當中須要包含jni.h頭文件,不然一些JNIEXPORT 沒法識別
    • .c文件中的方法名:JNIEXPORT jstring JNICALL Java_com_example_jnidemo_FirstJNI_sayHello(JNIEnv env, jobject thiz) 翻譯爲:JNIEXPORT 返回值類型 JNICALL Java_包名_類名_方法名(JNIEnv env, jobject thiz)
  2. 代碼編寫完成後,須要編譯.c文件爲so庫。在項目的根目錄下.(jni,src等所在的目錄),運行ndk-build編譯

其餘:github

編寫完接口java文件以後,能夠經過javah工具生成一個對應的.h文件,用於JNI實現。ide

實現方法:在bin/classes 目錄下執行javah -jni com.example.jnidemo.FirstJNI 便可在當前目錄下生成一個.h文件工具

ndk環境搭建請Google之。post

例程:

相關文章
相關標籤/搜索