NDK全稱Native Development Kit(本地開發工具集,),NDK是一系列工具集,可以幫助開發者在Android平臺上面進行c/c++的開發,并能自動將.so打包金apk中。關于NDK的環境配置大家自行google解決,本文介紹初步的開發流程。
一、創建項目并配置
1.新建Android項目,并在自己需要加載so文件的類或者自己新創建一個java類,在這里我先創建了一個類
2.HelloJni。生成C/C++代碼的存放路徑:如圖,選中app目錄,創建完成后會在main文件夾下創建一個jni目錄。
3.build.gradle配置
4.如果報錯可根據提示在gradle.properties中設置android.useDeprecatedNdk=true
二、native方法聲明與.h文件的生成
如下:在類文件中聲明native方法
c文件.h的聲明文件可以根據規則自己寫,這樣比較麻煩并且容易出錯,所以我們還是通過javah命令創建,將目錄切換到/app運行命令? 如果報錯如下圖,那是說明你的類文件沒有編譯成class文件,才會出現錯誤。解決的辦法有多種,這里我是在HelloJni類中添加main方法之后運行一次即可。
javah -d src/main/jni/ -classpath build/intermediates/classes/debug/ com.allen.ndkdemo.jnis.HelloJni
-d src/main/jni ?是命令創建的.h文件的存放路徑
-classpath build/intermediates/classes/debug/ com.allen.ndkdemo.jnis.HelloJni ?創建.h文件所需要的java編譯后的文件路徑
執行javah命令之后會在src/main/jni 目錄下生成頭文件com_allen_ndkdemo_jnis_HelloJni.h ?到此頭文件成功創建
三、C/C++代碼的編寫
.h 文件只是一個聲明文件,真正我們需要操作的代碼文件應該是.c文件,所有在jni目錄下創建同名的.c文件并引入聲明文件,并在代碼中返回一個字符創。如圖所示:
四、生成so文件配置及ndk-build
下面我們需要在jni目錄下添加 Application.mk文件、Android.mk文件,添加完文件之后,將目錄切換到 src/main/jni下執行ndk-build命令
Application.mk文件
Android.mk文件
ndk-build命令之后的文件目錄:
五、so文件的加載與使用
HelloJni.java中加載類庫??
static{
? ? ? ? System.loadLibrary("hello");
}
其他地方直接調用即:HelloJni.getkey();
大家有問題歡迎添加 QQ:452144286 ?隨時為你解答,謝謝!