Android平台架构概述
- 参考资料
- 平台架构
- Linux内核
- 硬件抽象层(HAL)
- Android Runtime
- 原生C/C++库
- Java API框架
- 系统应用
参考资料
平台架构
Android是一种基于Linux的开放源代码软件栈,为各类设备和机型而创建。其主要组件如下所示:
Linux内核
Android平台的基础是Linux内核。例如 Android Runtime(ART) 依靠Linux内核来执行底层功能,例如线程和底层内存管理。
使用Linux内核可让Android利用 主要安全功能 ,并且允许设备制造商为内核开发硬件驱动程序。
硬件抽象层(HAL)
硬件抽象层(HAL) 提供标准界面,向更高级别的 Java API框架 显示设备硬件功能。HAL包含多个库模块,其中每个模块都为特定类型的硬件组件实现一个界面,例如 相机 或 蓝牙 模块。当框架API要求访问设备硬件时,Android系统将为该硬件组件加载库模块。
Android Runtime
对于运行Android5.0(API级别21)或更高版本的设备,每个应用都在其自己的进程中运行,并且有自己的Android Runtime(ART)实例。ART可以执行DEX文件,并在低内存设备上运行多个虚拟。DEX文件是一种专为Android设计的字节码格式,经过优化,使用内存很少。编译工具链(例如 Jack )将Java源码编译为DEX字节码,然后在Android设备上运行DEX代码。
ART的部分主要功能包括:
- 预先(AOT)和即时(JIT)编译
- 优化的垃圾回收(GC)
- 在Android9(API级别28)及更高版本的系统中,支持将应用软件包的 Dalvik Executable格式(DEX)文件转换为更紧凑的机器代码
- 更好的调试支持,包括专用采样分析器、详细的诊断异常和崩溃报告,并且能够设置观察点以监控特定字段
原生C/C++库
许多核心Android系统组件和服务(例如ART和HAL)构建自原生代码,需要以C和C++编写的原生库。Android平台提供Java框架API以向应用显示其中部分原生库的功能。例如,可以通过Android框架的 Java OpenGL API 访问 OpenGL ES ,以支持在应用中绘制和操作2D和3D图形。
如果开发的是需要C或C++代码的应用,可以使用 Android NDK 直接从原生代码访问某些 原生平台库 。
Java API框架
可以通过以Java语言编写的API使用Android OS的整个功能集。这些API简化了对核心代码、组件和服务的复用,是构建Android应用的所需的基本单元。这些API包括以下几类:
- 视图系统 ,可以构建应用的UI
- 资源管理器 ,用于访问非代码资源
- 通知管理器 ,可让所有应用在状态栏中自定义提醒
- Activity管理器 ,用于管理应用的生命周期
- 内容提供程序 ,可以让应用访问其他应用中的数据或共享自己的数据
系统应用
Android 随附一套用于电子邮件、短信、日历、互联网浏览和联系人等的核心应用。平台随附的应用与用户可以选择安装的应用一样,没有特殊状态。因此第三方应用可成为用户的默认网络浏览器、短信 Messenger 甚至默认键盘(有一些例外,例如系统的“设置”应用)。
系统应用可用作用户的应用,以及提供开发者可从其自己的应用访问的主要功能。例如,如果您的应用要发短信,您无需自己构建该功能,可以改为调用已安装的短信应用向您指定的接收者发送消息。