Android studio 3.1中在已有的项目中进行JNI开发

 

       相信大家对JNI并不陌生,它的主要作用就是链接java层与navtive层,虽说在我们应用等用纯java的api完全能够满足我们的项目需求,但是在有些地方我们需要进行底层优化,那么此时会写jni就很必要了,比如说视频开发的时候就需要我们手动写jni的api了。接下来我就已有的android项目中进行jni的开发做一次记录。

       对于在创建项目中直接创建带jni相关的配置,我这里就不说明了,网上一大堆,而且也很简单。

       首先我们创建一个正常的module,也就是跟我们平时创建module一摸一样,接下来jni就正式开始了。我们在MainActivity中添加一个native方法以及添加包的导入。       

      在我们添加完成本地方法之后就进行rebuild project,这时我们会发现在目录下有MainActivity.class文件。

 

 到此处,说明我们第一步是成功的了。接下来就是生成头文件.h文件了。我们控制台中进入到java目录中,然后执行

javah 包名.类名 生成头文件,类似于这样:

这样就会在你的包名下多出这个文件:lml_molin_com_jnitest3_MainActivity.h,然后我们手动在main目录下创建一个

jni文件夹,我们将这个.h文件拷贝过去,然后在jni目录下将该文件复制一份,将后缀名修改为.c/.cpp,我们就要在这

里面进行native的具体实现了,类似于这样:

在我的demo中写的方法是对两个数进行简单的相加,我们也可以做一些其他复杂的操作,比如对文件的操作,内存的操作等等,

但是我们要对c/c++的相关api要了解,具体的大家自行了解。

下面就是要进行相关配置了,先看图,我们对照图解释:

在这里面,我们只需要关注这三个地方,两个externalNativeBuild模块以及一个ndk模块,现在说明下他们的作用,第一个externalNativeBuild的作用是生成哪些平台的so库,第二个的作用就是指定我们用什么文件生成我们的so库,ndk模块是我们生成so库的时候的名称,现在就需要CMakeLists.txt文件了,类似于下面这个:

在这个文件注意配置我们自己的c文件,类似于那个MainActivity.c的文件,上面那个hello就是我们生成的so库的名称。

配置完这些之后我们在进行一次rebuild  project,这个时候so库就生成了,so所在的位置是:

这样,我们的so就可以拿去使用了。最后看看我们使用的结果:

以次记录下,如果不正确的 请指正,大家一起学习学习!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值