架构

Android 系统架构包含以下组件:

图 1. Android 系统架构

应用框架

应用框架最常被应用开发者使用。如果您是硬件开发者,则应该了解开发者 API,因为很多此类 API 都会直接映射到底层 HAL 接口,并可提供与实现驱动程序相关的实用信息。

Binder IPC

Binder 进程间通信 (IPC) 机制允许应用框架跨越进程边界并调用 Android 系统服务代码,从而使得高级框架 API 能与 Android 系统服务进行交互。在应用框架级别,开发者无法看到此类通信的过程,但一切都会“按部就班地运行”。

系统服务

系统服务是集中的模块化组件,例如窗口管理器、搜索服务或通知管理器。应用框架 API 所提供的功能可与系统服务通信,以访问底层硬件。Android 包含两组服务:“系统”(诸如窗口管理器和通知管理器之类的服务)和“媒体”(与播放和录制媒体相关的服务)。

硬件抽象层 (HAL)

硬件抽象层 (HAL) 会定义一个标准接口来供硬件供应商实现,从而能让 Android 忽略较低级别的驱动程序实现。借助 HAL,您可以顺利实现相关功能,而不会影响或更改更高级别的系统。HAL 实现会被封装成模块,并会由 Android 系统适时地加载。有关详情,请参阅硬件抽象层 (HAL) 一文。

Linux 内核

开发设备驱动程序与开发典型的 Linux 设备驱动程序类似。Android 使用的 Linux 内核版本包含一些特殊的补充功能,例如:唤醒锁(这是一种内存管理系统,可更主动地保护内存)、Binder IPC 驱动程序以及对移动嵌入式平台非常重要的其他功能。这些补充功能主要用于增强系统功能,不会影响驱动程序开发。

您可以使用任意版本的内核,只要它支持所需功能(如 Binder 驱动程序)。不过,我们建议您使用 Android 内核的最新版本。有关详情,请参阅编译内核一文。