閱讀336 返回首頁    go 小米 go 小米6


jni使用基礎(二)之調用及工具使用

使用jni步驟:

一、JAVA代碼中寫聲明native 方法

二、創建jni目錄,編寫c代碼,方法名字要對應

三、編寫Android.mk文件

四、Ndk編譯生成動態庫

五、Java代碼load 動態庫.調用native代碼

 

一,怎樣寫Android.mk文件

       LOCAL_PATH := $(call my-dir) #注意:在此句後不能有空格,否則造成無法編譯。

                                                         #錯誤提示:make: *** No rule to make target
 
     include $(CLEAR_VARS)
 
     LOCAL_MODULE    := hello   #編譯庫的名字
     LOCAL_SRC_FILES := hello.c  #編譯的文件
 
     include $(BUILD_SHARED_LIBRARY)

 

 

注意: (**env).NewStringUTF與 (*env)->NewStringUTF表示是同一個操作。

 

 

怎樣給cygwin工具,配置環境變量,就可以在任何目錄都可以執行ndk-build命令:

1.找到cygwin的安裝目錄。

2.找到安裝目錄下的etc/profile文件。這裏麵就是保存了cygwin的環境變量信息。

3.在文件的23行,PATH中指定ndk-build加到路徑中。

   如:PATH="/usr/local/bin:/usr/bin:/cygdrive/f/android/tools/android-ndk-r8-windows/android-ndk-r8:${PATH}"

 

通過ndk編譯生成的obj文件夾的來曆和使用:

    使用ndk,通過android.mk編譯jni下的c文件,會在obj下生成.o的鏈接文件,然後

     會以.o的中間文件,執行鏈接的操作(根據不同的cup和操作係統版本)。最後

     就在obj目錄下生成.so文件。最後把.so文件,拷貝到libs目錄下。

     所以,當obj下的.o文件存在時,執行ndk-build就不會執行編譯c文件操作,而是直接把

     .so文件安裝到libs目錄下。

      需要注意的是:當重新修改了c文件,需要執行ndk-build clean操作,去清空obj下的鏈接

                                文件,這樣才能保證使用的是修改後的庫文件。

 

so文件存放位置:

     /data/data/包名文件夾/lib/**.so

最後更新:2017-04-02 17:09:26

  上一篇:go 用TreeSet生成不重複自動排序隨機數組
  下一篇:go 將PPT轉化為PDF我的JAVA代碼實現!