JNI 是Java Native Interface 的简称,开做Android App开发时难免会遇到与C++代码进行交互的需求,那就需要一个接口来实现这一交互,jni的出现就是为了解决这一问题。Android系统对外开放的SDK是用Java写的,其实如果对Android源码做过研究的人都会了解Android底层是基于C++开发出来的,只不过考虑到开发的方便才开放了一套Java版的sdk。如何进行jni开发呢,jni开发和普通app开发难度一样,都是调用已结写好的api,不同的是jni的书写要符合c++的语法规则。这里还不得不说一下ndk,ndk是一套Google开发的工具集,Jni开发是依赖于这个工具集的,他可以把代码编译成so库。只不过现在的Androidstudio的集成环境做的很优秀,不用我们再去关心ndk。但是还是知道有这个东西的。
1首先创建一个空的Java类,jni的写法就是在每个函数前加上native的关键字,也可以在MainActivity类里面写,只不过在生成头文件的时候会很麻烦,试一下就会明白了
2生成头文件
终端进入Java文件的跟目录,这里就是app/src/main/java 终端输入
javah -jni com.example.jni.jni.JNI
格式 javah -jni 包名+类名
成功后会生成一个头文件,将头文件移到特定的jni文件夹,并将所有的函数声明改为函数定义,这个文件夹可以是任意位置,只要在gradle里配置对即可,稍后介绍gradle的配置