NDK(Native Development Kit)“原生”也就是二进制
android常用的开发方式是java封装的库,而这些库的底层实现是由C/C++实现,如媒体,图形库等
java调用这样实现就需要用JNI(Java Native Interface)
平时用的也就是google给我们封装的好的库,即底层实现用的不是Java,但都有统一的Java接口
NDK的作用是“我们自己写本地代码”(C/C++),自己用JNI封装成Java接口
比如我们想做个计算,显然这不是Java的强项,但可以用C/C++来写实现,返回一个运算结果就行了
NDKr5已经实现了不用写一行Java代码开发程序了,只不过还是用到了虚拟机,细节被封装隐藏起来了而已
对于JNI和NDK很多Android开发初学者没有搞明白这个问题
JNI是Java调用Native机制,是Java语言自己的特性全称为 Java Native Interface,类似的还有微软.Net Framework上的p/invoke,可以让C#或Visual Basic.Net调用C/C++的API,所以说JNI和Android没有关系,在PC上开发Java的应用,如果运行在Windows平台使用 JNI是是经常的,比如说读写Windows的注册表。
NDK是Google公司推出的帮助Android开发者通过C/C++本地语言编写应用的开发包,包含了C/C++的头文件、库文件、说明文档和示例 代码,我们可以理解为Windows Platform SDK一样,是纯C/C++编写的,但是Android并不支持纯C/C++编写的应用,同时NDK提供的库和函数功能很有限,仅仅处理些算法效率敏感的 问题,所以Android123推荐初学者学好Java后再学习JNI。
NDK其实多了一个把.so和.apk打包的工具,这个是很重要的。
而JNI开发并没有打包,只是把.so文件放到文件系统的特定位置。
如果是做应用开发,则需要NDK工具,不然你开发的应用程序怎么给用户用呢?难道帮他重新编译文件系统?
其他至于实现,java调用本地C/C++函数,及其编写方式,我觉得JNI和NDK没有什么区别。
还有一个我个人理解,NDK开发C/C++只能能使用NDK自带的有限的头文件,而使用JNI则可以使用文件系统中带的头文件,比如utils/Log.h
而后者的资源更多,当然NDK正在努力开发中,以便支持更丰富的接口。
参考推荐:
JNI Tutorial
Android NDK之JNI使用例子
Android 使用NDK R5开发JNI应用详解
Android NDK Hello
分享到:
相关推荐
Android之so文件、JNI和NDK
而本套教程正是在Android开发中的核心重点开发技术(JNI/NDK),我们知道,Android的底层是Linux且Java的性能并不如C/C++好,所以在开发一些需要超高性能的App的时候就需要通过JNI来直接调用Android底层框架所提供的...
android jni和NDK简单案例(.so库调用),下载文件,androidstudio上运用,最好时在模拟器上测试(只x86兼容)
jni-ndk学习+ue+source+图片jni-ndk学习+ue+source+图片
JNI NDK 开发指南 对JNI有个初步的认识,里面涉及必要的函数说明
Android Studio JNI/NDK 编程; 具体见博客: http://blog.csdn.net/q610098308/article/details/51313341
eclipse jni,ndk环境搭建测试程序
Jni_Ndk开发最简单的例子,一个简单的按钮,当点击按钮之后,调用JNI 返回值到上层,然后更新TextView
android JNI运行NDK编译成的可执行文件。 具体信息参考博客http://blog.csdn.net/csdn49532/article/details/50698666
内容概要:公司技术分享PPT,介绍了Android JNI-NDK的基础知识 适合人群:具备一定编程基础,工作1-3年的研发人员
Android手机内存管理与性能优化&JNI、NDK高级编程(JNI、Dalvik、内存监测) 视频资源
网上有关在linux中讲android jni(ndk) eclipse开发环境的搭建的资料有很多,但大多都非常的繁琐,本来是简单的事情描述的却很复杂。下面结合我的实际把步骤写出来,其实很简单一步就可完成……
Android NDK 开发时需要的 常用的JNI API
安卓app开发之Android JNI即NDK C语言开发教程,适合初学者
第一个jni程序 helloworld.
jni调用 使用传统的ndk-build方式 见博客http://blog.csdn.net/findsafety/article/details/72311321
JNI函数的一些常用的函数,学习jni和ndk的可以下载看看
使用Android Studio + NDK进行JNI开发,博客中有详尽说明,可以参考 http://blog.csdn.net/u014316982/article/details/53081597
传智博客主讲,android jni ndk相关视频。百度网盘地址分享。