目标
通过Android Studio简化JNI的工作,通过IDE的帮助,自动生成JNI部分的代码,只需要关注业务代码的处理就行. 完成一个简单的Demo,定义一个native函数,在Java层调用这个方法,返回一个字符串,native层调用Java的一个函数,完成Java-> Jni, Jni->Java.
源码
步骤
- 新创建一个支持native的project
- 定义一个新的natvie函数
- 通过native方法调用java层的方法实现
功能实现
新建native工程
如果是已经有的工程怎么办?
如果是已经现成的功能需要支持JNI怎么办
可以把新生成的位置中的相应代码整理到旧的工程中
- build.gradle
- cpp文件夹
完成java->Jni Jni->Java方法的定义和实现
定义一个native方法,因为没有定义,所以Android Studio标红了.右键点击,选择下图中的创建Jni的模板代码.
最新的Android Studio生成Jni Header代码的路径
这个时候,在native-lib.cpp文件在会自动生成模板代码,可以直接在模板中写业务代码了. demo中直接调用了java层的方法.
java层的代码,通过透传过来的context来显示一个toast,然后处理一下传入的字符串,返回处理后的字符串
通过上面的Java->Jni Jni->Java 以及context的透传和显示返回值. 可以解决很大部分的业务Jni调用的需求.