- 1、本文档共40页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- ad2s1205cn内置基准振荡器的12位rdc.doc
- ad100变频器使用使用说明书.doc
- ad7401a隔离式σδ调制器简体中文.doc
- ad7705最好的中文资料.doc
- ad9361控制输出用户使用指南.doc
- acs数据库使用详细介绍.doc
- ad9361射频和基带锁相环用户使用指南.doc
- adams方法和一般线性多步法.doc
- adams实例建模仿真.doc
- ad9912纯中文数据使用指南.doc
- 2024年度党员干部民主生活会班子对照检查材料.docx
- 公司党委领导班子2024年度民主生活会对照检查材料4个带头方面.docx
- 市府办(政府办)领导班子2024年民主生活会会后综合情况报告.docx
- 在2025年市司法局信息宣传工作推进会上的讲话.docx
- 在2025年全省文化旅游高质量发展推进会上的讲话.docx
- 在2025年全区工业、住建大规模设备更新推进会上的讲话.docx
- 党支部2024年组织生活会民主评议党员情况总结报告_1.docx
- 2024年度组织生活会个人对照检查剖析材料.docx
- 镇党委书记2024年度民主生活会对照检查材料1.docx
- 党支部2024年组织生活会民主评议党员情况总结报告.docx
文档评论(0)