安裝和簡單使用NDK

1、什么是NDK?

JNI是為了方便Java調(diào)用C、C++等本地代碼而封裝的一層接口。NDK是一個工具集合,調(diào)用NDK可以很方便的使用JNI。

2、在Android Studio中配置

? ? 1、下載NDK:https://developer.android.com/ndk/downloads/index.html

? ? 2、配置PATH=F:\li_yi\tools\Android\android-ndk-r12b

? ? 3、在AS中關(guān)聯(lián)NDK,ndk.dir=F:\li_yi\tools\Android\android-ndk-r12b

3、NDK開發(fā)

1、新建一個類,增加native方法:

? ? public class NDKTest {

? ? ? ? public native String getTestStr();

? ? }

2、得到.h文件

? ? 2.1、執(zhí)行build---make project,會得到一個class文件

? ? ?(在XXX\app\build\intermediates\classes\debug\com\liyi\jnitest目錄下)。

? ? 2.2、點(diǎn)開AS的Terminal標(biāo)簽,

? ? ? ? 進(jìn)入到XXX\app\build\intermediates\classes\debug目錄下(cd 命令),

? ? ? ? 執(zhí)行javah命令生成h文件:

? ? ? ? ? ? javah -jni com.liyi.jnitest.NDKTest

? ? 2.3、在main目錄下新建一個jni目錄,剪切該文件到改目錄下。

? ? .h文件:

? ? #include"com_liyi_jnitest_NDKTest.h"

? ? JNIEXPORT jstring JNICALL Java_com_liyi_jnitest_NDKTest_getTestStr

? ? (JNIEnv *env,jobject obj){

? ? return(*env)->NewStringUTF(env,

? ? ? ? "Java_com_liyi_jnitest_NDKTest_getTestStr!");

? ? }

3、新建一個c文件,實(shí)現(xiàn)在DNKTest中定義的native方法

? ? #include "com_liyi_jnitest_NDKTest.h"

? ? JNIEXPORT jstring JNICALL Java_com_liyi_jnitest_NDKTest_getTestStr

? ? (JNIEnv *env, jobject obj){

? ? return (*env)->NewStringUTF(env,

? ? ? ? "Java_com_liyi_jnitest_NDKTest_getTestStr!");

? ? }

4、在app module目錄下的build.gradle中設(shè)置庫文件名(生成的so文件名)

? ? defaultConfig {

? ? ......

? ? ndk{

? ? moduleName "NDKTest"? ? ? ? //生成的so名字

? ? //輸出指定三種abi體系結(jié)構(gòu)下的so庫。目前可有可無。

? ? abiFilters "armeabi", "armeabi-v7a", "x86" ?

? ? }

5、在NDKTest中,靜態(tài)初始化load代碼,

? ? static {

? ? ? ? System.loadLibrary("NativeExample");?

? ? }

6、打開Project的gradle.properties文件,添加

? ?? ? ?android.useDeprecatedNdk=true

7、同步操作:

? ? Tools->Android->Sync Project with Gradle Files

8、生成SO文件:Build->Rebuild Project

? ? 在項(xiàng)目的app\build\intermediates\ndk\debug\lib路徑下生成SO文件

9、使用生成SO文件:

? ? 在jnitest\src\main下新建文件夾jniLibs,并將生成的SO文件拷貝到該文件夾下。



代碼:

http://download.csdn.net/detail/le_shuo/9591352


參考:

http://blog.csdn.net/krubo1/article/details/50547681

http://blog.csdn.net/yanbober/article/details/45309049/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容