Android JNI编程学习笔记——前言

来源:互联网 发布:淘宝店用什么方法推广 编辑:程序博客网 时间:2024/06/05 18:14

       在我刚接触Android应用开发时,看到的都是Java写的代码,本来我学的是C++编程,为了学习Android 应用开发,又学习了Java语言,幸好Java和C++很相似,所以学起来难度不是很大,再后来看到网上讨论JNI开发,NDK开发,NDK又是什么东东,google一下,原来Android应用开发 也支持C/C++,虽然有些限制,但是毕竟支持 啊,后来慢慢的学习发现Android应用通过JNI技术开发的应用竟然如此之强大,有很多只用Java语言开发所无法比拟的优势。

       我相信还有好多Android程序猿想学习Android JNI编程,但是不知如何下手,因为能找到的关于Android JNI系统开发学习的资料 和 书籍很少。所以特此把我学习JNI的学习过程记录一下,希望能和想学习Android JNI开发的程序猿们一起学习,一起进步。


好了,开始学习了:

首先,什么是JNI?

JNI是Java Native Interface的缩写,中文为Java本地调用。JNI允许Java代码和其它语言编写的代码进行交互。JNI一开始就是为了本地已经编译好的语言,尤其是C和C++而设计的,但是它并不妨碍你使用其它语言,只要调用约定受支持就可以了。(摘自百度百科)


什么是NDK?

NDK是一套允许开发人员使用原生编程语言C/C++ 以及汇编语言 开发Android应用的工具集合,可以帮助开发人员复用C/C++编写的代码(例如ffmpeg, 图像处理算法)。


其次,为何要使用NDK?

概况来说主要分为几种情况:

        1.代码复用:NDK可以帮助开发人员利用开源项目,目前大多数的开源项目是用C语言编写的。

        2.代码保护:apk的java层很容易被反编译,及时使用了混淆机制,还是能看出很多的蛛丝马迹, 而使用C/C++编写的so库反汇编难度要比java的反编译要难得多。

        3.代码移植:目前大多数的嵌入式平台都支持C/C++开发,所以,现在编写的代码以后可以方便的移植到其它平台继续使用。

        4.性能优势:在一些情况下C/C++编写的代码运行性能要比Java编写的代码性能高,例如图像处理算法、 游戏引擎 和信号处理等等,但是也要注意Java现在发展的运行性能也很强悍了,有时候不一定比C/C++慢,尤其在Android 4.4中加入的ART模式,并且虚拟机调用C/C++写的代码时也会影响一些 性能,所以不要乱用C/C++开发。Android官网也提示开发人员:The NDK will not benefit most apps. you shuld only use the NDK if it is essential to your app-never because you simply perfer to program in C/C++.(提取了部分语句,没抄全)

        5.优化优势:NDK可以帮助开发人员使用一些SDK所无法提供的优化功能,例如ARM的neon优化,neon可加速多媒体和信号处理算法。详情:http://www.arm.com/zh/products/processors/technologies/neon.php


前言就写到这吧,第一次写博客,所以写的很乱,大家先凑活着看,我相信未来会好起来的。大笑

参考资料:https://developer.android.com/tools/sdk/ndk/index.html

                  http://www.cnblogs.com/hibraincol/archive/2011/05/30/2063847.html

推荐资料:Android C++高级编程--使用NDK 《Pro Android C++ with the NDK》

                 《Android Native Development Kit Cookbook》


0 0
原创粉丝点击