JNI全面解析(从基础入门到灵活运用)
2017-06-28 18:26
246 查看
**
JNI是Java Native Interface(java本地开发接口)的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++),你可以理解为一种协议,通过jni可以实现java和c的互相调用,相当于桥梁的作用。Java和Android开发者最好要了解下C语言的一些基本类型、函数、指针等。
NDK是Native Development Kit(原生开发包)的缩写,“原生”也就是二进制,Android常用的开发方式是Java封装的库,而这些库的底层实现是由C/C++实现,如媒体,图形库等。
NDK其实多了一个把.so和.apk打包的工具,而JNI开发只是把.so文件放到文件系统的特定位置。
**
通过jni技术,可以扩展android手机的功能,比如wifi热点比如NFC技术。
native coder执行高效,很明显c语言比java语言更节省内存:比如需要大量运算的游戏(极品飞车等等),万能的解码器,播放器,比如ffmpeg,OpenGl的3D渲染。
代码的复用,有些很完善的工具库是用c写的,比如openCV,7-zip等。
其他一些特殊的应用场景,比如车载软件系统。
**
1.配置NDK,很简单
2.配置完成后在你项目的local.properties文件中会自动生成ndk.dir
3.修改你项目的gradle.properties文件
接下来就可以写你的项目了
**
1.在Java类中写native代码
2.在main目录下创建jni目录,写c代码 生成头文件
3.配置动态链接库的名称
4.加载动态链接库
5.开始调用
至此,一个简单的调用jni的项目就已经完成了,刚入门的小伙伴们,赶紧试试吧。
1.JNI到底是什么?JNI和NDK什么区别?
**JNI是Java Native Interface(java本地开发接口)的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++),你可以理解为一种协议,通过jni可以实现java和c的互相调用,相当于桥梁的作用。Java和Android开发者最好要了解下C语言的一些基本类型、函数、指针等。
NDK是Native Development Kit(原生开发包)的缩写,“原生”也就是二进制,Android常用的开发方式是Java封装的库,而这些库的底层实现是由C/C++实现,如媒体,图形库等。
NDK其实多了一个把.so和.apk打包的工具,而JNI开发只是把.so文件放到文件系统的特定位置。
**
2.JNI的应用场景?
**通过jni技术,可以扩展android手机的功能,比如wifi热点比如NFC技术。
native coder执行高效,很明显c语言比java语言更节省内存:比如需要大量运算的游戏(极品飞车等等),万能的解码器,播放器,比如ffmpeg,OpenGl的3D渲染。
代码的复用,有些很完善的工具库是用c写的,比如openCV,7-zip等。
其他一些特殊的应用场景,比如车载软件系统。
**
3.如何配置使用JNI(AndroidStudio详细配置过程)
**1.配置NDK,很简单
2.配置完成后在你项目的local.properties文件中会自动生成ndk.dir
3.修改你项目的gradle.properties文件
接下来就可以写你的项目了
**
4.实例运用
**1.在Java类中写native代码
2.在main目录下创建jni目录,写c代码 生成头文件
3.配置动态链接库的名称
4.加载动态链接库
5.开始调用
至此,一个简单的调用jni的项目就已经完成了,刚入门的小伙伴们,赶紧试试吧。
相关文章推荐
- [java相关]Java基础知识——JNI入门介绍(上)
- JNI 实战全面解析(蛮好)
- 框架基础——全面解析Java注解
- 【转】C#类似Jquery的html解析类HtmlAgilityPack基础类介绍及运用
- Java 基础注解全面解析
- UICollectionView 基础全面解析
- Spring基础---Spring源码解析以及入门
- Python学习 - 使用BeautifulSoup来解析网页一:基础入门
- 灵活实用的VBS入门教程基础篇
- 最全面 Nginx 入门教程 + 常用配置解析
- Android调用JNI全面解析
- 黄聪:C#类似Jquery的html解析类HtmlAgilityPack基础类介绍及运用
- JNI 实战全面解析
- 【Android基础入门〖16〗】XML解析
- 最全面 Nginx 入门教程 + 常用配置解析
- 【17-06-16】Java入门测试题,测测你基础知识掌握程度(附答案及个人解析)
- Qt入门之基础篇 ( 二 ) :Qt项目建立、编译、运行和发布过程解析
- [转]Awk基础入门之二:读书笔记-awk运用
- 零基础入门学习Python(18)--函数:灵活即强大
- Java基础知识――JNI入门介绍