
JNI
vincentdevs
这个作者很懒,什么都没留下…
展开
-
Android NDK开发(一)——环境搭建
Android下的NDK开发是Android开发中不可或缺的一部分,通过Google提供的NDK套件,我们可以使用JNI这座桥梁在Java和C/C++之间建立联系(互相调用)。那么,为什么在Android开发中需要了解NDK开发呢?诚然,这些原因有很多说法,在我总结来是这样的。C/C++是比Java还要古老的编程语言,由于其古老的特性,导致早期有很多优秀的类库出现,譬如处理视频编解码的FFMPEG类库,这些复杂的类库早就被C/C++编写过,我们在处理视频编解码的时候没必要重复“造轮子”,所以能直接拿来用的就原创 2014-12-25 21:23:10 · 5135 阅读 · 2 评论 -
Android NDK开发(五)——C代码回调Java代码
在上篇博客里了解了Java层是怎样传递数据到C层代码,并且熟悉了大部分的实际开发知识,基本上掌握这些就可以做一个基本的NDK开发了,但是光是了解Java回调C层的数据是不是还不够啊,考虑问题要考虑可逆性,Java能回调C,那么C能否反过来回调Java呢?答案是肯定可以的,这篇博客就介绍一个C语言如何调用Java层的代码。以下是一些问题场景,我们带着这个问题场景来分析一下实现的过程。原创 2015-01-05 09:27:00 · 9766 阅读 · 4 评论 -
Android NDK开发(六)——使用开源LAME转码mp3
在本专栏的前面几篇博客中讲述了一些Android NDK开发的基础,从环境搭建一直到利用JNI进行Java端和C端代码的互相调用,并且的讲解的Demo也是很简单易懂的,相信掌握前面博客的大部分内容,就可以着手在实际项目中利用JNI进行NDK开发了,那么既然基础过了,接下来我在这里尝试去使用真实项目中去。我们知道,C语言因为高效,而且又是最早期的高级编程之一,一直存活至今近40年了,所以很多用C开发出来高效类库是可以被复用的,这样不仅做到高效率,而且减少了项目开发周期。在这里我找到了一个关于音频文件转码的最常原创 2015-01-06 16:16:29 · 18057 阅读 · 17 评论 -
Android NDK开发(二)——从Hello World学起
上篇文章讲述了Android NDK开发的一些基本概念,以及NDK的环境搭建,相信看过的朋友NDK开发环境搭建应该是没有问题了,还没有搭建或者不知道怎么搭建的朋友请点击这里。那么这篇文章,我们跟刚学Java编程语言一样,从世界知名程序“Hello World!”开始,开发出我们的第一个NDK程序。原创 2014-12-26 09:32:00 · 6071 阅读 · 3 评论 -
Android NDK开发(三)——常见错误集锦以及LOG使用
Android NDK开发经常因某些因素会出现一些意想不到的错误,很多时候调试这些错误的时候,显得比调试Java代码要复杂,一方面是导致错误的原因很多很杂,另一方面NDK开发涉及到C/C++代码的编写,很多程序员对此不熟悉。那么这篇博客就总结一下,在NDK开发中经常出现的一些问题,并且尝试提供一些正确的解决方案,方便在开发时能够快速定位到错误,更改错误,当然了,错误是多种多样的,很难把所有的错误都总结出来,在这里仅作为一个笔记吧,以后在NDK开发中发现一个错误或者解决一个错误后,我就在这里记录一下,日积月累原创 2014-12-27 16:16:09 · 9846 阅读 · 1 评论 -
Android NDK开发(四)——Java传递数据到C
前面几篇文章介绍了Android NDK开发的简单概念、常见错误及处理和从第一个Hello World开始实际做一个简单的JNI开发示例,相信看完之后,大家对NDK开发有了一个概念上的认识了,那么接下来我们需要再深入一下NDK的开发,我们知道NDK开发就是使用JNI这层“协议”在Java和C之间起个“桥梁”的作用,将Java和Native C之间联立起来,让Java和C直接的数据进行互调。谈到Java和C之间的数据调用,那么Java是怎样传递数据到C中的呢,C拿到数据处理完后又怎样将处理后的数据回传给Jav原创 2015-01-04 10:02:36 · 4965 阅读 · 0 评论 -
Android NDK开发(七)——现代化开发方式
本专栏的前面几篇博客写了一些Android下通过JNI进行NDK开发的基础知识,主要步骤在里面也写的很清晰,但是看起来比较麻烦,为什么呢?可能细心的朋友会发现我每次在进行交叉编译的时候,是通过cygwin模拟Linux环境用ndk-build命令进行编译的,而且每次新建JNI工程的时候,都会在工程目录下手动的新建一个jni的目录,在该目录下新建C源码文件和Android.mk配置文件,这一系列的操作显得特别繁琐,尤其是cygwin,首先其下载安装是个非常耗时耗力的操作,其次使用cygwin还需要理解Linu原创 2015-01-07 17:30:18 · 3363 阅读 · 8 评论 -
Android NDK开发(八)——应用监听自身卸载,弹出用户反馈调查
在上上篇博客中我写了一下NDK开发实践项目,使用开源的LAME库转码MP3,作为前面几篇基础博客的加深理解使用的,但是这样的项目用处不大,除了练练NDK功底。这篇博客,我将讲述一下一个各大应用中很常见的一个功能,同样也是基于JNI开发的Android应用小Demo,看完这个之后,不仅可以加深对NDK开发的理解,而且该Demo也可以使用在实际的开发中。不知道大家在使用一个Android应用的时候,当我们卸载这个应用后,设备上会弹出一个“用户反馈调查”的网页出来,也许很多人没有留意过或者直接忽视了,那么从现在开原创 2015-01-08 17:35:22 · 11779 阅读 · 12 评论 -
Android NDK开发(九)——应用监听自身卸载升级版,使用Inotify监听安装目录
在上一篇博客中,我们讲了一个小小的案例,用NDK监听应用程序自身卸载,并且打开内置浏览器加载用户调用页面。关于监听应用程序自身卸载的原理和实现方案可以在上篇博客中找到,地址是:http://blog.youkuaiyun.com/allen315410/article/details/42521251,这里就不再复述了。 值得注意的是,在上篇博客中我也已经引述了一个案例中存在的问题,就是在监听应用程序安装目录是否被删除时,使用了while(true)这种死循环,让C代码每隔1秒钟去自动执行一次检查应用程原创 2015-01-09 16:35:54 · 8532 阅读 · 16 评论