下图是 Android 操作系统的架构,架构包括 4 层,由上到下依次是应用程序层、应用程序框架层、核心类库和 Linux 内核。其中,核心类库中包含系统库及 Android 运行环境。 图1 Android 操作
图1 Android 操作系统的架构 应用程序层
Android 装配了一个核心应用程序集合,包括 E-mail 客户端、SMS 短消息程序、日历、地图、浏览器、联系人管理程序和其他程序,所有应用程序都是用 Java 编程语言编写的。
用户开发的 Android 应用程序和 Android 的核心应用程序是同一层次的,它们都是基于 Android 的系统 API 构建的。
应用程序框架层
应用程序的体系结构旨在简化组件的重用,任何应用程序都能发布它的功能且任何其他应用程序都可以使用这些功能(需要服从框架执行的安全限制),这一机制允许用户替换组件。开发者完全可以访问核心应用程序所使用的 API 框架。通过提供开放的开发平台,Android 使开发者能够编制极其丰富和新颖的应用程序。开发者可以自由地利用设备硬件优势访问位置信息、运行后台服务、设置闹钟、向状态栏添加通知等。
所有的应用程序都是由一系列的服务和系统组成的,主要包括以下几种:
系统库
Android 本地框架是由 C/C++ 实现的,包含 C/C++ 库,以供 Android 系统的各个组件使用。这些功能通过 Android 的应用程序框架为开发者提供服务。这里只介绍 C/C++ 库中的一些核心库:
Android 运行环境
Android 包含一个核心库的集合,该核心库提供了 Java 编程语言核心库的大多数功能。几乎每一个 Android 应用程序都在自己的进程中运行,都拥有一个独立的 Dalvik 虚拟机实例。Dalvik 是 Google 公司自己设计的用于 Android 平台的 Java 虚拟机。Dalvik 虚拟机是 Google 等厂商合作开发的 Android 移动设备平台的核心组成部分之一,它可以支持已转换为 .dex (Dalvik Executable) 格式的 Java 应用程序的运行。
.dex 格式是专为 Dalvik 设计的一种压缩格式,适合内存和处理器速度有限的系统。
Dalvik 经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个 Dalvik 应用作为一个独立的 Linux 进程执行。Dalvik 虚拟机依赖 Linux 内核提供基本功能,如线程和底层内存管理。
Linux内核
Android 基于 Linux 提供核心系统服务,例如安全、内存管理、进程管理、网络堆栈、驱动模型。除了标准的 Linux 内核外,Android 还增加了内核的驱动程序,如Binder (IPC) 驱动、显示驱动、输入设备驱动、音频系统驱动、摄像头驱动、WiFi驱动、蓝牙驱动、电源管理。Linux 内核也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。
分层的好处就是使用下层提供的服务为上层提供统一的服务,屏蔽本层及以下层的差异,当本层及以下层发生了变化时,不会影响到上层,可以说是高内聚、低耦合。