NDK開發(fā)(一)

以下內(nèi)容均使用AndroidStudio開發(fā)

一、ndk環(huán)境配置

ndk下載:
http://developer.android.com/tools/sdk/ndk/index.html
選擇對應(yīng)的版本,下載解壓即可使用。

Paste_Image.png
Paste_Image.png

二、建立ndkdemo

創(chuàng)建工程

Paste_Image.png

建立對應(yīng)的類,并增加靜態(tài)native方法,這里創(chuàng)建一個加法方法為例。

生成.h文件

使用命令行生成java類對應(yīng)的頭文件
注意類名沒有.java后綴

javah -jni com.lib.ndk.MathUtil

在main目錄下生成jni文件夾

Paste_Image.png

把剛生成的.h文件拉到j(luò)ni目錄下,并實現(xiàn)相應(yīng)的.cpp

Paste_Image.png

.h文件:

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_lib_ndk_MathUtil */

#ifndef _Included_com_lib_ndk_MathUtil
#define _Included_com_lib_ndk_MathUtil
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_lib_ndk_MathUtil
 * Method:    sum
 * Signature: (II)I
 */
JNIEXPORT jint JNICALL Java_com_lib_ndk_MathUtil_sum
  (JNIEnv *, jclass, jint, jint);

#ifdef __cplusplus
}
#endif
#endif

.cpp文件:

#include <com_lib_ndk_MathUtil.h>
JNIEXPORT jint JNICALL Java_com_lib_ndk_MathUtil_sum
  (JNIEnv *env, jclass cls, jint a, jint b){
    return a+b;
  }

設(shè)置項目的build.gradle文件
設(shè)置jni名稱為:JniDemo,并生成各個架構(gòu)so


Paste_Image.png

在module中的gradle.properties(如無則創(chuàng)建)添加:

android.useDeprecatedNdk=true

編譯

Build->MakeProject

Paste_Image.png

使用

把so拷貝至需要使用項目中的jniLibs目錄下
在程序啟動的同時調(diào)用

System.loadLibrary("JniDemo");//庫名

一般使用靜態(tài)自由塊保證在裝載的同時加載so庫

 static {
        System.loadLibrary("JniDemo");//庫名
    }

在java層使用靜態(tài)方法調(diào)用即可:

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

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

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