1、安装NDK开发工具:进入Android Studio->Preferences->Android SDK->SDK Tools,找到NDK安装:
2、新建project,在gradle.properties中加入
android.useDeprecatedNdk=true
在app中的build.gradle的defaultConfig中加入
ndk {
moduleName "JNISample"
stl "stlport_static"
ldLibs "log"
}
3、创建JNIUtils类,声明一个native方法:
public native int add(int a,int b);
build工程,生成build/intermediates/classes/debug文件夹
在Terminal中cd到debug文件夹,执行命令:
javah -jni com.yjs.ndkdemo.JNIUtils
会在dubug文件夹下生成c++头文件:
内容如下:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_yjs_ndkdemo_JNIUtils */
#ifndef _Included_com_yjs_ndkdemo_JNIUtils
#define _Included_com_yjs_ndkdemo_JNIUtils
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_yjs_ndkdemo_JNIUtils
* Method: add
* Signature: (II)I
*/
JNIEXPORT jint JNICALL Java_com_yjs_ndkdemo_JNIUtils_add
(JNIEnv *, jobject, jint, jint);
4、在main文件夹下创建一个jni文件夹,并将上一步生成的头文件拷贝到jni中,
然后在jni中创建.cpp文件:
在其中实现头文件的方法:
JNIEXPORT jint JNICALL Java_com_yjs_ndkdemo_JNIUtils_add(JNIEnv *env, jobject obj, jint a, jint b) {
return (a + b);
}
5、调用native方法:
首先在声明native方法的类中加入
static {
System.loadLibrary("JNISample");
}
其中”JNISample”和你在app的build.gradle中声明的ndk的moduleName一致。
之后便可以调用native方法:
JNIUtils jniUtils = new JNIUtils();
Log.d("JNIUtils", String.valueOf(jniUtils.add(1,2)));