Led中间件开发.ppt

Led中间件开发.ppt

ID:48186452

大小:972.50 KB

页数:43页

时间:2020-01-18

Led中间件开发.ppt_第1页
Led中间件开发.ppt_第2页
Led中间件开发.ppt_第3页
Led中间件开发.ppt_第4页
Led中间件开发.ppt_第5页
资源描述:

《Led中间件开发.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Android系统之中间件的开发英蓓特培训中心2011.3主要内容Android中间件简介JNI标准简介如何实现JNI源码下开发AndroidLed中间件NDK开发AndroidLed中间件一Android中间件简介什么是Android中间件?可以理解为操作系统与应用程序的沟通桥梁,处于Android系统架构中的第二层,包括:函数层(Library):函数层是一套C/C++库,既能通过JNI标准为上层应用提供本地函数接口,又能调用内核代码与操作系统交互,中间件的开发就是在这一层。虚拟机(VirtualMachine):虚拟机则为上层Java应

2、用提供运行环境。绿色部分为函数层,黄色部分为虚拟机二JNI简介什么是JNI?JNI(JavaNativeInterface)是本地编程接口,它使得在Java虚拟机(VM)内部运行的Java代码能够与其它编程语言编写的应用程序和库进行交互操作。JNI一般有以下一些应用场景:高性能要求:如一些图形的处理,运算量非常大,直接使用java是不能胜任;调用驱动:如调用一些外部系统接口的驱动--读卡器的驱动,OCI驱动;使用大内存:如进程内Cache,远远超过VM所能分配的内存;调用系统服务:如java调用搜索服务,搜索是由C/C++实现的。Androi

3、dJNI使用Android已实现的JNI动态库,需要额外连接动态库libnativehelper.so对于开发者自己实现的JNI动态库*.so文件可以与Java应用一起打包到apk文件中。由于Android的应用层是以Java语言开发的,使用下层c/c++库提供的服务时需使用JNI在Android源码中,主要的JNI代码(C++源文件)放在以下的路径中:frameworks/base/core/jni/。被编译成动态库libandroid_runtime.so三如何实现JNI实现JNI需要三个方面Android源代码开发实现JNI与NDK下实

4、现JNI有所不同,在源代码中需以下三点:1.在JNI文件中实现JNI本地方法;2.在JNI文件中将本地方法注册到系统3.在java代码中声明JNI函数。JNI本地方法实现JNI方法的核心是JNINativeMethod结构体,这个结构体规定了JNI函数的相关描述信息,在jni.h中定义如下:typedefstruct{constchar*name;/*JNI函数的名称*/constchar*signature;/*描述JNI函数的参数和返回值*/void*fnPtr;/*JNI函数对应的C语言的指针函数*/}JNINativeMethod;这

5、里值得注意的是JNINativeMethod的第二个成员,用字符串来表示JNI函数的参数和返回值Java的类型JNI的类型对应字母Java布尔类型(boolean)jboolean(8位无符号)ZJava字节(byte)jbyte(8位有符号)BJava字符(char)jchar(16位无符号)CJava短整型(short)jshort(16位有符号)SJava整型(int)jint(32位有符号)IJava长整型(long)jlong(64位有符号)JJava单精度浮点(float)jfloat(IEEE754,32位)FJava双精度浮点

6、(double)jdouble(IEEE754,64位)DJava对象jobjectLJava无返回值voidVJNI的数据类型及对应字母例如:staticJNINativeMethodmethods[]={{"add","(II)I",(void*)add},};对照表可知JNI函数add的类型是”(II)I”,表示两个参数都是整型,返回值也为整型。方法数组的注册JNINativeMethod类型的数组,需要完成系统注册才能够使用。staticintregisterNativeMethods(JNIEnv*env,constchar*cla

7、ssName,JNINativeMethod*gMethods,intnumMethods){}staticintregisterNatives(JNIEnv*env){}jintJNI_OnLoad(JavaVM*vm,void*reserved)以上三个函数从下到上依次调用,分别为Java类、平台、虚拟机注册本地JNI方法。JNI函数的声明在Java代码中,定义的函数由JNI实现时,需要指定函数为native。System.loadLibrary(“”);载入由JNI源文件生成的动态库,“”里的内容为so文件名去掉前面的lib和后面的.s

8、o。例如加载libsimplejni.so动态库,“”里为simplejni。应用程序使用JNI可以通过源代码中/development/samples/Simpl

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。