网站大量收购独家精品文档,联系QQ:2885784924

android底层软硬件开发技术.doc

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
中智讯(武汉)科技有限公司 主要议题 Android底层代码框架 Android NDK开发技术 NDK示例 - LED 10:53 2 软硬件开发技术 ? Android是一个开源的嵌入式通用操作系统平台,采用标 准Linux作为内核 ? Android的源码任何厂商都可以获取,并且基于自己的硬 件架构开发私有系统 ? 嵌入式硬件的多样化造成软件开发跟硬件结合比较紧密 ? 随着Android系统“通用化”,各种千差万别的“嵌入式” 产品将“不满足”现有的系统软件框架,通过软硬件开发 技术,衍生出各种专有系统 10:53 3 Android系统框架 软硬件结 合代码 10:53 4 HAL硬件抽象层 ? HAL(Hardware Abstract Layer)硬件抽象层是Google开发的Android系统里 上层应用对底层硬件操作屏蔽一个软件层次,说白了,就是上层的应用不用关 心底层硬件具体如何工作的,只要向上层提供一个统一的接口即可,这种设计 思想广泛的存在于当前的软件架构设计里。 10:53 5 HAL硬件抽象层 ? 新的HAL架构采用HAL stub形式,Stub 向 HAL 提 供 操 作 函 数 ( operations ) , 而 runtime 则是向 HAL 取得特定模块(stub) 的 operations,再 callback 这些操作函数。 这种以 indirect function call 的架构,让 HAL stub 变成是一种包含关系,即 HAL 里 包含了许许多多的 stub。Runtime 只要说明 类型,即 module ID,就可以取得操作函数。 对于目前的HAL,可以认为Android定义了 HAL层结构框架,通过几个接口访问硬件从 而统一了调用方式。 10:53 6 HAL硬件抽象层 10:53 7 HAL层存在的意义 ? 并不是所有的硬件设备都有标准的Linux kernel的接口; ? Kernel driver涉及到GPL的版权,某些设备制造商并不愿意公开硬件驱动,所 以才通过HAL方式绕过GPL; ? 针对某些硬件Android有一些特殊的需求。 10:53 8 Android JNI调用 ? JNI(Java Native Interface)是本地编程接口,它使得在 Java 虚拟机(VM) 内部运行的 Java 代码能够与其它编程语言编写的应用程序和库进行交互操作。 ? JNI一般有以下一些应用场景: ? 高性能要求 :如一些图形的处理,运算量非常大,直接使用java是不能胜任; ? 调用驱动:如调用一些外部系统接口的驱动--读卡器的驱动,OCI驱动; ? 使用大内存:如进程内Cache,远远超过VM所能分配的内存; ? 调用系统服务:如java调用搜索服务,搜索是由C/C++实现的。 10:53 9 Android JNI调用 ? 由于Android的应用层是以Java语言开发的,使 用下层c/c++库提供的服务时需使用JNI ? 在Android源码中,主要的JNI代码( C++源文 件)放在以下的路径中: frameworks/base/core/jni/ 。被编译成动态库 libandroid_runtime.so ? 使用Android已实现的JNI动态库,需要额外连 接动态库 libnativehelper.so ? 对于开发者自己实现的JNI动态库*.so文件可以 与Java应用一起打包到apk文件中。 10:53 10 Android底层开发方法 ? NDK开发: ? 从应用角度来开发软硬结合代码 ? 适用于单个应用程序的底层结合需求 ? HAL硬件抽象层开发: ? 从整个系统框架需求角度来开发本地程序 ? 适用于共享功能软硬结合代码应用程序的底层结合需求 10:53 11 主要议题 Android底层代码框架 Android NDK开发技术 NDK示例 - LED 10:53 12 NDK开发技术介绍 ? Android NDK ? NDK(Android Native Development Kit)是一系列的开发工具,允许程序开发人员在Android 应用程序中嵌入C/C++语言编写的非托管代码 ? Android NDK优势 ? 解决了核心模块使用托管语言开发执行效率低下的问题 ? 允许程序开发人员直接使用C/C++源代码,极大的提高了Android应用程序开发的灵活性 ? Android NDK不足 ? 增加程序的例如信号处理或物理仿真)使用非托管代码运行效率最高,复杂性,增加了程序调 试的难度 ? CPU运算量大和内存消耗较少的部分(因此并不是所有的核心部分都适合使用C/C++语言编写) 10:53 13 NDK开发技术介绍 ? Andro

文档评论(0)

汪汪队 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档