text: Android软件架构
  Android被定义为包含Linux内核、中间件和关键应用程序的修改版本的软件栈。图2.20详细显示了Android软件架构。因此，Android应该被视为一个完整的软件栈，而不仅仅是一个操作系统。
  应用程序层
  用户直接交互的所有应用程序都是应用程序层的一部分。这包括一组核心通用应用程序，例如电子邮件客户端、短信程序、日历、地图、浏览器、联系人以及其他应用程序。应用程序通常是用Java实现的。开源安卓体系结构的一个关键目标是让开发人员能够轻松地为特定设备和特定的最终用户需求实现新的应用程序。使用Java使开发人员能够摆脱硬件特定的考虑因素和特性，并利用Java的高级语言功能，如重新定义的类。图2.20显示了Android平台上基本应用程序类型的示例。
  应用程序框架层提供了可通过标准化API访问的高级构建块，程序员可以使用这些构建块来创建新的应用程序。该体系结构旨在简化组件的重用。一些关键的应用程序框架组件包括：
  活动管理器：管理应用程序的生命周期。它负责启动、暂停和恢复各种应用程序。
  窗口管理器：底层的Java抽象。曲面管理器处理帧缓冲操作和低级绘图，而窗口管理器在其顶部提供一个层，以允许应用程序声明其客户端区域并使用状态栏等功能。
  窗口管理器：底层SurfaceManager的Java抽象。SurfaceManager处理帧缓冲操作和低级绘图，而窗口管理器在其顶部提供一个层，以允许应用程序声明其客户端区域并使用状态栏等功能。
  程序包管理器：安装和删除应用程序。
  电话管理器：允许与电话、短信和彩信服务进行交互。
  内容提供者：这些函数封装了需要在应用程序之间共享的应用程序数据，例如联系人。
  资源管理器：管理应用程序资源，如本地化字符串和位图。
  视图系统：提供用户界面（UI）基元，如按钮、列表框、日期选择器和其他控件，以及UIEvents（如触摸和手势）。
  位置管理器：允许开发人员利用基于位置的服务，无论是通过GPS、蜂窝塔ID还是本地Wi-Fi数据库。（已识别的Wi-Fi热点及其状态）
  通知管理器：管理事件，例如到达消息和约会。
  XMPP：在应用程序之间提供标准化的消息传递（也称为聊天）功能。
  应用程序框架下面的层由两部分组成：系统库和Android运行时。系统库组件是一组有用的系统函数，用C语言编写，供Android系统的各个组件使用。通过Java接口从应用程序框架和应用程序中调用。这些功能是通过Android应用程序框架向开发人员公开的。一些关键系统库包括以下内容：
  Surface Manager：Android使用类似于Vista或Compiz的合成窗口管理器，但它要简单得多。您的绘图命令不是直接绘制到屏幕缓冲区，而是进入屏幕外位图，然后与其他位图相结合，形成用户看到的屏幕内容。这允许系统创建各种有趣的效果，例如透明窗口和花哨的过渡。
  OpenGL:OpenGL（Open Graphics Library）是一个用于渲染2D和3D计算机图形的跨语言、多平台API。OpenGL/ES（OpenGL for embedded systems）是为嵌入式系统设计的OpenGL的子集。
  媒体框架：媒体框架支持多种格式的视频录制和播放，包括AAC、AVC（H.264）、H.263、MP3和MPEG-4。
  SQL数据库：Android包括一个轻量级的SQLite数据库引擎，用于存储持久数据。
  浏览器引擎：为了快速显示HTML内容，Android使用WebKit库，该库与Safari和iPhone中使用的库基本相同。在谷歌改用Blink之前，它也是GoogleChrome浏览器使用的库。
  仿生LibC：这是标准Csystem库的精简版，针对基于嵌入式Linux的设备进行了调整。接口是标准的Java本机接口（JNI）。
  Android的操作系统内核与标准的Linux内核发行版相似，但不完全相同。一个值得注意的变化是，Android内核缺乏不适用于移动环境的驱动程序，这使得内核更小。此外，Android通过为移动环境量身定制的功能增强了Linuxkernel，通常不适用于台式机或笔记本电脑平台。Android依靠其Linux内核提供核心系统服务，如安全性、内存管理、进程管理、网络堆栈和驱动程序模型。内核还充当硬件和软件栈其他部分之间的抽象层，并使Android能够使用Linux支持的各种硬件驱动程序。
  移动设备上使用的大多数操作系统，如iOS和Windows，都使用直接编译到特定硬件平台的软件。相比之下，大多数安卓软件都被映射到字节码格式，然后将其转换为设备本身的本地指令。Android的早期版本使用了一个名为Dalvik的方案。然而，Dalvik在扩展到更大的内存和多核架构方面有很多限制，所以最近发布的Android依赖于一种称为Androidruntime（ART）的方案。ART与Dalvik现有的字节码格式dex（Dalvik Executable）完全兼容，因此应用程序开发人员不需要将其编码更改为可在ART下执行。