之前一直在Eclipse上進行的JNI開發,最近在Android上進行開發的時候,發現都不知道該怎麼去做。後來通過百度把問題解決了,下面把開發的流程記一下,方便學習和複習:
預備工作:
第一步,安裝NDK,可以在SDK tools中直接下載:
第二步:配置系統環境。當安裝完之後,進入sdk的目錄下(注意不要有中文路徑!),找到ndk-bundle的文件夾:
第三步:進入ndk-bundle目錄,拷貝ndk-bundle的資源路徑,打開環境變量設置,將其添加至環境變量path中:
到此,預備工作結束。如果前面已經進行過先關操作,可以無視,直接進入開發的過程啦~,下面以一個例子進行說明:
第一步:創建一個新的項目,將項目結構切換至project層次,找到local.properties,打開,確認 是否添加到了ndk路徑,如果沒有,手動添加,注意要進行語義轉換。
第二步:打開gradle.properties,在底部添加以下代碼,兼容老版本的ndk:
android.useDeprecatedNdk=true
第三步:
在類中聲明native方法,並且設置加載動態鏈接庫:
第四步:
在mian目錄下,新建一個jni(與java項目同級)的文件夾,裏面存放c代碼,例如:
第五步,打開build.gradle,在android{
。。。
}
中添加以下代碼
sourceSets {
main {
jni.srcDirs=[]
jniLibs.srcDir 'src/main/jni_src'//告知jni源碼目錄
}
}
ndk{
moduleName "Hello"//動態鏈接庫名稱與這裏一致
abiFilters "armeabi", "armeabi-v7a", "x86"
}
添加完畢之後,rebuild project,成功後在app->build->intermediates目錄下發現有一個ndk的文件夾,裏面便存放着編譯後的so文件
接下來,就可以在項目中調用native方法啦!