1. NDK安装及配置
打开Setting => Appearance & Behavior => System Settings => Android SDK
选择SDK-Toos 勾选红色箭头部分点击Apply进行安装,如果Status状态为Installed说明你已经安装过了
2. 配置NDK环境变量
安装好的NDk一般位于你的sdk文件夹下的ndk-bundle。
我的位置在,如下:
然后将该路径配置到你系统变量的path里面去,如下:
添加完毕后打开cmd,输入ndk-build,出现如下内容则表示成功:
3.so库开发,新建本地 方法
如下,在MainActiviy.java中建立了一个方法
public native String getString();
可以看到这个方法的声明中有native关键字,这个关键字表示这个方法是本地方法,也就是说这个方法getStrFromJNI()是通过本地代码(C/C++)实现的,在java代码中仅仅是声明。
4. 编译该类得到对应的.h文件
切换到Terminal,进入到该工程的 java 目录下(如下图所示),然后输入
javah -jni 包名.类名
编译成功后,刷新下工程可以看到编译出的.h文件,该文件只是为了辅助我们写出相应的.c文件, 如下图
.h文件内容如下图:
5. 编写.c文件
这时我们切换到Project,然后在app目录下新建jni文件夹,并在里面建立一个huazict.c的c文件(如下图所示)
.c文件中编写最基本的测试代码:
#include <string.h> #include <jni.h> jstring Java_Java_com_scott_ndkcreatso_MainActivity_getString(JNIEnv *env, jobject thiz) { return (*env)->NewStringUTF(env, "这是我测试的jni"); }
6. build项目 生成各CPU需要SO文件
导航栏中Build---ReBuild project 会在工程app>build>intermediates>ndk>debug>lib下看到所生成的SO文件
7. 在项目中实践并调用
导入JNIUtils引用工具类,在MainActivity中调用输入出so中封装的字符