环境:Android Studio1.5.1
1.Project Structure中配置Android NDK Location(下载好的NDK的路径,没有下载直接点击下方的download)
2.在MainActivity中声明一个本地方法(注意:没有方法体,方法体由C/C++语言实现)并Make Project
如:public native String DataFromNative();
然后加上(作用是:加载后面生成的so库)
static{
System.loadLibrary("MyJNI");
}
提醒:Make Project之后本地方法仍然报红,在此不用理会,后面自动消失
3.Settings->Tools->External Tools->添加一个名为javah(名字自取)的自定义工具,设置如下
(1)Program: $JDKPath$\bin\javah.exe
(2)Parameters: -classpath . -jni -d $ModuleFileDir$/src/main/jni $FileClass$
(3)Working diretory: $ModuleFileDir$\src\main\java
4.在app/src/main目录下建立一个jni文件夹
5.在MainActivity(也就是本地方法所在的文件)上右键->External Tools->javah
结果为:Process finished with exit code 0 表示成功
此时jni文件夹中会自动生成一个头问价(如:com_robert_jjj_MainActivity.h)
6.接下来正式开始实现本地方法了
在jni文件夹下新建main.c文件
内容如下:
#include "com_robert_jjj_MainActivity.h"
JNIEXPORT jstring JNICALL Java_com_robert_jjj_MainActivity_DataFromNative
(JNIEnv *env, jobject obj){
return (*env)->NewStringUTF(env,"This just a test for Android Studio NDK JNI developer!");
}
7.配置
7.编译
报错:
Error:(14, 0) Error: NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin. For details, see http://tools.android.com/tech-docs/new-build-system/gradle-experimental. Set "android.useDeprecatedNdk=true" in gradle.properties to continue using the current NDK integration.
解决办法:
在gradle.properties 文件中加入下面这句话,重新编译
android.useDeprecatedNdk=true;
重新编译一次完美完成!