Android技术之JNI和HAL

Android技术之JNI和HAL

ID:36721450

大小:555.33 KB

页数:52页

时间:2019-05-14

Android技术之JNI和HAL_第1页
Android技术之JNI和HAL_第2页
Android技术之JNI和HAL_第3页
Android技术之JNI和HAL_第4页
Android技术之JNI和HAL_第5页
资源描述:

《Android技术之JNI和HAL》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Android技术之JNI和HAL内容提纲}jni的介绍和作用}jni在android系统中的应用}jni的编写和编译技术}hal的介绍}hal的编写技术www.farsight.com.cnAndroidApplicationSystemAPIApplicationFrameworkCoreJavalibrariesCcodeframeworkJNIDalvikVMAndroidlibrariesAndroidRuntimeUserSpaceHardwarelayersKernelAndroidportingwor

2、ksSpaceLinuxkernelAndroidcoreAndroiddevicesdriversDriversDriversHardwaresystemHardwaresystemwww.farsight.com.cnSpaceJNI的介绍}矛盾体:java应用程序如何与linux底层交互?android实现了很好的分层机制,从而使得开发者开发更加专注,但是android的应用层和框架层使用的开发语言为java,Java是一种平台无关性的语言,平台对于上层的java代码来说是透明的,而android是基于linu

3、x的一个操作系统,linux只提供了c/c++或者是汇编的接口给开发,因此,为了使得android系统运行正常,必须想办法把java语言与c/c++连接起来,这个连接器螺丝就是jni技术www.farsight.com.cnjni的概念}Java本机接口(JavaNativeInterface(JNI))是一个本机编程接口,JNI允许Java代码使用以其它语言(譬如C和C++)编写的代码和代码库www.farsight.com.cnjni在android系统中的应用}jni在android系统中得到了大量的运用,比如

4、wifi,3G,camera,g-sensor等等,只要是涉及到平台硬件,都需要用到jniwww.farsight.com.cnwifi框架WirelessSettings.javaWifiManager.javaWifiService.javaWifiNative.javaandroid_net_wifi_wifi.cppwifi.cexternal/wpa_supplicant/rt3070sta.kowww.farsight.com.cn摄像头的框架www.farsight.com.cn3G框架APP:Phon

5、eFrameworktelephonyjavaJNIFrameworktelephonyCsocketrild守护进程hal:特定模块的参考库linuxkernel:ppp协议3G模块www.farsight.com.cnGPS框架www.farsight.com.cnjni的编写}Java调用c/c++的框架:Java代码-->jni代码-->c/c++代码}写一个简单的Javaapp来调用C/C++代码打印“HelloWorld!”的过程。这个过程由下面这几个步骤组成:1.编写java代码,创建一个类(Hello

6、World.java)声明nativemethod。2,编写jni文件3,将jni实现文件编译成一个nativelibwww.farsight.com.cn第一步:编写java代码,创建一个类(HelloWorld.java),并且使用本地方法。}publicclassHelloActivityextendsActivity{}publicvoidonCreate(BundlesavedInstanceState){}super.onCreate(savedInstanceState);}setContentView

7、(R.layout.main);}this.fsSayHello();}}}static{}System.loadLibrary("hello_jni");//notice}}privatestaticnativeintfsSayHello();//noticedeclare}}www.farsight.com.cn}HelloActivity类声明一个本地fsSayHello()方法。还有个static初始化函数}native方法的声明:}和一般java程序语言的声明中有不同之处,如fsSayHello()。一个n

8、ative方法声明必须包含native修饰符www.farsight.com.cn第二步:构建jni函数,并且编译成本地库}jintJNI_OnLoad(JavaVM*vm,void*reserved)}{}jintresult=-1;}JNIEnv*env=NULL;}LOGI("JNI_OnLoad");}if(vm->GetEnv((vo

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

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

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