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