Android studio JNI技术实现与本地C++链接

也是自己前段时间在写一个Android人脸识别APP,其中为了提高速度,使用本地端的C++代码实现的人脸检测+识别

我们都知道Android支持Java语言交互,但是不支持C和C++,但是有时候为了方便和需求,需要用到Java应用层调用底层的C和C++代码,这时候就需要用到Java的JNI技术,叫做Java本地接口技术,实现Java与C或C++进行调用

下面我想说一下JNI技术的整体步骤和原理:

1、新建一个Android studio工程(注意把这个勾选上,不然后面还需要配置,勾选上就无须自己配置Cmake,Gradle啦)

2、Android指定位置新建一个类,如JavaJNI.java类(一般位置为、src/main/java/"你的包名"/),在该类里面声明一个方法,该方法有本地端实现,即如 public native void open();

3、写好之后本地native方法之后,配置Javah, 操作步骤:File-Tools-External Tools-"点击加号"    name随便起一个,方便统一叫javah, 下面的Description可以和上面一致;

Program: $JDKPath$injavah.exe

Auguments: -classpath . -jni -o $ModuleFileDir$/src/main/jni/$Prompt$ $FileClass$

Working directory: $ModuleFileDir$srcmainjava

以上为配置Javah过程,到这就配置好了,注意上面几个配置你可以理解为固定配置,其实是一些路径定义,可以不用管的,

4、鼠标选中刚刚新建的含有本地实现方法的类,右击选择External Tools的Javah, 随机在弹出的窗口输入名字(这个名字就是马上生成的C或C++头文件的名字,文件会保存在/src/main/jni/下面),这样我们的C或C++头文件就生成好了,在JNI文件下,

5、将生成的.h头文件 放到、src/main/cpp文件中

6、在cpp文件下在新建一个对应的.cpp文件,开始编写需要调用的本地函数方法(具体做法把刚生成.h文件中的方法名复制过来,“;”改为方法体“{}”,然后在方法体中用C++实现你需要的功能)

7、在MainActivity.java测试类中调用JavaJNI.java类中本地声明的方法

8、编译即可成功调用实现你写的C++方法

原文地址:https://www.cnblogs.com/rhp2lmy1314/p/11028224.html