您的位置:首页 > 移动开发 > Android开发

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

2017-06-18 00:20 176 查看
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.大功告成!



如有不对,请提出,谢谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: