Android系统底层架构【译】

Android系统底层架构 转载请注明来源:http://blog.csdn.net/lifeshow 设备移植 Android提供了设备移植和支持方面有较大的自由度,可以制定自有的设备规范和驱动。通过硬件抽象层(HAL-Hardware Abstraction Layer),可以在底层硬件驱动和上层平台之间建立关联(Hooks)。Androind通过自身的开源性,来支持各种类型的设备发展。
为了确保你的设备具有较高的品质,同时能够给用户提供一致性的体验。你的设备必须要通过兼容性检测(CTS-Compatibility Test Suite)。CTS可以确保新的设备符合标准要求,同时在设备上运行的APP可以为用户提供较好的用户体验。
Android底层系统架构 在将android系统移植到设备之前,必须先理解Android是如何运行的。由于驱动和HAL会和Android上层应用交互,通过研究AOSP(Android Open Source Project),可以对你深入理解Android运行机制提供巨大帮助。下图显示了Android系统层次的架构:

图1.Android系统架构 应用框架(Application Framework) 应用框架是大部分Android APP开发者关注的部分。应用API和底层HAL接口基本是1:1对应关系,通过分析API,可以为底层驱动的实现提供帮助。 IPC绑定 IPC(跨进程通信-Inter-ProcessCommunication)机制允许Andorid应用层框架,调用Android系统进程服务。对于应用层来说,IPC通信对于开发者来说是“透明”的。 系统服务(System services) 上层API所提供的大部分功能都需要通过调用系统服务来实现对于硬件的操控。Android系统服务都是以模块化的组件呈现的,如Window管理器、搜索服务或状态栏服务等。总体分为系统和媒质两大类。系统服务包括Windows和状态栏管理器,媒质服务包括各类视频、音频操作服务等。 硬件抽象层(HAL) HAL提供系统服务层和底层驱动层之间的标准接口抽象。对于特定的新硬件,首先必须实现HAL和相应的底层驱动。Android不限定你自己的HAL和设备驱动之间的交互规范,因此你可以自由定制。但同时你必须保证,你定制的HAL可以无缝的与驱动层对接运行。HAL通常在Android系统中,以共享链接库(.so文件)形式存在。 Linux内核 大部分情况下,开发Android设备驱动和开发Linux设备驱动的过程是一样的。Android系统采用了特定版本的Linux内核为基础,同时进行了扩展,如唤醒所、更节约内存的内存管理机制,IPC绑定驱动以及其他更针对移动类设备的定制。这些定制和扩展和系统功能的关系更大,与驱动层关系不大。你可以使用其他版本的Linux内核,只要该内核支持移动设备的特定要求,如IPC绑定等。同时,建议你采用最新版本的内核。



    推荐阅读