Android studio配置jni以及第一个jni程序

C语言学了很多,但无奈毕业之后一直再做Android,做了也有一年多的时间,总想着把曾经学过的C语言和java能联系到一起开发,所以在几个月之前就着手学习jni的开发,可能是智商的问题,环境一直没有配好,就一直放着,今晚闲来无事就配好并调试成功,以下是我个人总结,如有不对请提出来,谢谢。

JNI

1.什么是jni?
首先,jni全称是java native interface,它是一套协议(联想一下TCP/IP两台电脑之间的通信),用来规范java和C/C++互相调用时候的标准,比如java中表示字符串的基本数据类型String,而C语言中是char*或者char类型的数组,这个时候为了统一标准,就定义了jstring类型来表示字符串。

2.为什么要用JNI?
在有些特定场景下,C语言的效率和java的效率不能同日而语,前者可能会达到后者的100倍,那特定场景有哪些呢?通常会在音视频以及图像的处理中应用非常广泛,比如在进行图片压缩的时候会调用nativeCompress方法,它其实是一个c语言实现的native方法,只不过framework层已经封装好了。

ndk

ndk是编译工具,用用来编译C语言并生成so库。

配置AS环境

1.下载ndk。
AS很方便的能直接下载ndk并解压,解压成功之后将ndk的路径添加到系统路径下,注意不能有汉字或者空格,如果配置成功,在命令行输入ndk-build,会出现几行字符串,如果配置失败,则会提示ndk-build不是内部或者外部命令。
2.项目中配置。
在项目层级下的local.properties中添加sdk和ndk的路径,如果ndk配置成功的话会自动添加ndk目录。ndk.dir=C:\Users\Administrator\AppData\Local\Android\Sdk\ndk-bundle
sdk.dir=C:\Users\Administrator\AppData\Local\Android\Sdk

还有在项目层级目录下的gradle.properties中添加android.useDeprecatedNdk=true,为了兼容老的ndk。

编写第一个JNI程序

1.java文件夹定义native方法,比如在MainActivity.java中定义public native String getJniString();
2.实现java文件中定义的native方法。
首先在main层级下新建一个jni文件夹。
这里写图片描述
然后新建C语言文件并编写相应代码。
这里写图片描述
解释一下C文件中的方法名,可以看为四段式:Java+包名+类名+方法名,中间用下划线分离。
3.gradle中配置生成so文件。
这里写图片描述
主要作用是生成so文件的名字和配置CPU的架构。
4.在调用native的方法类中先要定义静态代码块来加载so文件。
5.大功告成!
这里写图片描述

如有不对,请提出,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值