不一样的Android体系架构

    本文讲述的Android系统体系架构,是指应用层之下的整个系统内部的架构层级关系。而并非常说的4层架构:应用层,framework,运行库与环境,Linux内核,而是把系统内部的流程调用划分更加详细。

一、架构

Android系统体系架构图:

            

Android系统体系架构分为5层,自顶而下分别是:

  • 应用程序框架(Application Framework)
  • 进程通信层(Binder IPC)
  • 系统服务层(Android System Services)
  • 硬件抽象层(HAL)
  • Linux内核(Linux Kernel)

1.1 应用程序框架(Application Framework)

应用框架,对于App开发者使用最为频繁。而硬件开发者,只需要认识到这些APIs是HAL层接口的映射就可以了。

1.2 进程通信层(Binder IPC)

Binder Inter-Process Communication(IPC),进程间通信机制允许framework来跨进程边界,来调用Android的系统服务的代码,这使得框架API与Android系统服务能够进行交互。对于开发者来说,这种通信机制是隐藏的。

1.3 系统服务层(Android System Services)

功能是通过framework APIs与系统服务通信,以实现底层硬件的访问。服务是模块化的,主要部件如Window Manager, Search Service,或者Notification Manager.Android包括两类服务:系统服务(如Window Manager,Notification Manager)和媒体服务(包括播放和录制的媒体服务)。

1.4 硬件抽象层(HAL)

硬件抽象层(HAL)定义了一个标准接口用于硬件厂商的实现. HAL允许功能实现,而不会影响或修改上层的系统。HAL的实现被打包成模块(.so)文件,并在适当的时候被加载进Android系统。

           

硬件抽象层组件

  • 标准HAL结构 每个特定的硬件HAL接口特性被定义在hardware/libhardware/include/hardware/hardware.h,这保证HAL具有可预测的结构。该接口允许Android系统来加载相应HAL模块的正确版本。HAL接口有两个通用组件:模块与设备。

  • HAL模块 HAL的实现被用于构建成模块(.so)文件,并在适当的时机通过Android动态链接到系统。你可以通过为每一个HAL的实现创建Android.mk文件并指向源码文件,来实现将其构建到系统中。一般来说,你的共享库必须被命名为符合规定的格式,以保证他们能被找到被正确加载。命名模式为为 <module_type>:<device_name>.

1.5 Linux内核(Linux Kernel)

开发设备驱动程序类似于开发一个典型的Linux设备驱动程序。Android使用Linux内核,再加上一些特殊的特性,如wake locks, Binder IPC驱动,以及用于移动嵌入式平台重要的其他功能。这些增加主要用于系统功能,而不会影响驱动程序的开发。


二、实战

对于Android的体系结构,通过上面的讲解,还是比较抽象,下面将通过具体的一个模块Audio来举例说明。先展示一张Audio的体系结构图:

                    

  • Application framework, 应用程序框架包括使用android.media API与audio硬件交互的app代码。在内部,这个代码调用相应的JNI类来访问与audio硬件交互的native代码。

  • JNI, JNI代码关联android.media调用native代码来访问audio硬件. JNI代码位于frameworks/base/core/jni/frameworks/base/media/jni.

  • Native framework, native框架提供一个相当于android.media包的本地框架,调用IPC代理来访问媒体服务器的音频专用的服务。native框架代码位于frameworks/av/media/libmedia.

  • Binder IPC, IPC代理可跨进程通信,该代理位于frameworks/av/media/libmedia,并以字母”I”开头。

  • Media server,媒体服务包括audio服务,是真正与HAL实现层交互的代码。media server代码位于frameworks/av/services/audioflinger.

  • HAL,HAL定义了audio服务调用的标准接口,audio硬件必须正确实现的功能。 audio HAL层接口位于hardware/libhardware/include/hardware.关于更多可查看hardware/audio.h.

  • Kernel driver,audio驱动是与硬件和HAL实现的交互。可以使用Linux声音架构(ALSA),开发声音系统(OSS),或者自定义的驱动(HAL与驱动程序无关)。

三、小结

通过对Android体系的从上层到底层的一个梳理过程,希望能对andorid源码有完整的认识,对模块调用有一个较清晰的体会。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Android实习报告 姓名: 班级: 学号: 院系: 指导教师: 实习日期: 目录 一、绪论 1 1.1 项目研究背景 1 1.2项目研究的目的及意义 1 二、实习目的 2 三、实习内容 2 3.1系统主要实现功能 2 3.2页面设计 2 四、实习心得 4 五、教师评语 5 一、绪论 1.1 项目研究背景 Android是一套真正意义上的开放性移动设备综合平台,它包括操作系统、中间件和 一些关键的平台应用。Android的Java程序运行环境包含一组Java核心函数库及Dalvik虚 拟机,它们有效地优化了Java程序的运行过程。Android系统平台基于优化了的Linux内 核,它提供诸如内存管理、进程管理、设备驱动等服务,同时也是手机软硬件的连接层 。 Android最大特点在于它是一个开放的体系架构,具有非常好的开发和调试环境,而 且还支持各种可扩展的用户体验,Android里面具有非常丰富的图形系统,对多媒体的支 持功能和非常强大的浏览器。Android平台的开放性等特点既能促进技术(包括平台自身 )的创新,又有助于降低开发成本,还可以使运营商能非常方便地制定特色化的产品,因 此,它具有很大的市场发展潜力。 1.2项目研究的目的及意义 随着4G网络的使用,移动终端不再仅是通讯网络的终端,还将成为互联网的终端。手 机通讯录作为手机的基本功能之一,每天我们都在频繁地使用着。根据手机功能使用调 查显示,有9成以上的消费者使用手机通讯录功能。随着手机通讯录功能的不断加强与完 善,手机通讯录对于人们的意义,已不仅仅像记事簿一样显示通讯地址,而是向着个性 化、人性化的方向发展。通讯录从无到有,从英文到中文,经过了十几年的发展历程, 今后的发展趋势就是从通讯录发展为名片夹,也就是在一个人名下,可以存储座机、手 机、单位、地址、电子邮件等内容。这种名片夹在电话薄的基础上,大大丰富了内容, 同时结构也发生了革命性变化,而且随着手机的发展,相信更优秀的通讯录会越来越受 到社会各层人士的喜爱。 二、实习目的 1. 熟悉Android软件开发的基本架构 2. 利用Eclipse和ADT插件设计通讯录 三、实习内容 3.1系统主要实现功能 通过对Android技术的相关研究,了解Android源码的实现原理以及过程,从而设计出 一款能够使用的手机通讯录。这款手机通讯录实现的相关内容如下:1. 联系人的添加、删除、编辑、查看;2. 向选中的联系人打电话、发短信。结构图如图1所示 图1 功能结构图 3.2页面设计 通讯录界面如图2所示。添加联系人和编辑联系人界面,如图3所示。 图2 图3 单击主页面中任意一个名字,即可查看对应的通讯录的详细信息,如图4所示。 图4 四、实习心得 一周的实习很快就过去了,这一周的实习中大多数时间都在找工作、面试。所以真真 正正坐下来学习的时间很少,但是通过老师给的资料也简单的了解了通讯录的设计过程 ,通过本次设计,也使我对Android平台的数据库操作有了更进一步的理解,也对Andro id系统有了更深入的了解。同时也知道自己对知识的掌握还不够,需要更深入的学习。 每完成一次综合课程设计都会遇到很多困难、然后去想办法解决,这让我受益匪浅,我 相信它会对我以后的人生和工作起到很好的促进作用,有着积极影响。在以后工作中, 无论遇到什么困难,都不退缩。用积极的态度去面对。 五、教师评语 教师评语: 教师签字: ----------------------- Android实习报告全文共7页,当前为第1页。 Android实习报告全文共7页,当前为第2页。 Android实习报告全文共7页,当前为第3页。 Android实习报告全文共7页,当前为第4页。 Android实习报告全文共7页,当前为第5页。 Android实习报告全文共7页,当前为第6页。 Android实习报告全文共7页,当前为第7页。 ----------------------- 3

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kevin@1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值