设为首页 加入收藏

TOP

Android下如何通过JNI方法向上提供接口总结
2014-11-24 14:30:34 来源: 作者: 【 】 浏览:0
Tags:Android 如何 通过 JNI 方法 向上 提供 接口 总结

JNI是Java Native Interface的缩写,即Java本地接口.从Java1.1开始,JNI标准成为Java平台的一部分,它允许java代码和用其它语言编写的代码进行交互.JNI是本地编程接口,它使得在Java虚拟机(VM)内部运行的Java代码能够与用其他编程语言(如C,C++和汇编语言)的应用程序和库进行交互操作.


JNI在Android层次结构中的作用如下图所示:




在Android中,主要的JNI代码在以下的路径中:


Android源码根目录/frameworks/base/core/jni/


这个路径中的内容将被编译成库libandroid_runtime.so,这就是一个普通的动态库,被放置在目标系统的/system/lib目录中.


除此之外,Android还包含其他的JNI库,例如,媒体部分的JNI目录frameworks/base/media/jni/中,被编译成库libmedia_jni.so.


JNI中的各个文件实际上就是C++的普通文件,其命名一般和支持的Java类有对应关系。这种关系是习惯上的写法,而不是强制的。


在Android中实现的JNI库,需要连接动态库libnativehelper.so.


在Android源码根目录/frameworks/base/services/jni/目录下有一个onload.cpp文件,其内容如下:



这些注册函数是由同目录下的其他.cpp文件中实现,如上面的register_android_server_HelloService(env)这个函数是在com_android_service_HelloService.cpp文件中实现的.那么编译器又是如何知道这点的呢 答案当然是Android.mk这个文件,打开这个文件,其内容如下:



接下来让我们来看看其中一个注册函数的具体实现过程是如何的,比如:register_android_server_HelloService(env),打开com_android_service_HelloService.cpp文件,其下有注册函数的实现代码,如下:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux内核线程的创建及在QEMU上的.. 下一篇jQuery+Struts2无刷新验证码

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: