Android 操作系统简介
- 1. 起源
- 2. 操作系统市场占有率
- 3. Android 系统架构
- 3.1 Linux Kernel
- 3.2 Hardware Abstraction Layer (HAL)
- 3.3 运行时 + 系统库
- 3.3.1 Android Runtime
- 3.3.1 Native C/C++ Libraries
- 3.4 Java API Framework
- 3.5 System Apps
1. 起源
安卓(Android)是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的操作系统,由安迪·鲁宾开发,主要用于移动设备。2005年8月由Google收购。2008年,谷歌发布Android 1.0系统,这也是Android系统最早的版本。目前的最新版本是2022年8月发布的Android 13。——百度百科
2. 操作系统市场占有率
(数据来源于调研机构StockApps.com)
据某调研机构提供的2018年7月-2022年6月的智能手机操作系统占有率的统计数据显示,Android系统市场占有率稳定在70%-80%,IOS占比20%-30%,仅有不超过5%的市场被三星、诺基亚和KaiOS等厂家瓜分。
客观上说,Android在操作系统市场的统治力仍无人可撼动,相较于主要竞争对手iOS,Android系统具有更高的自由度、开源特性以及可负担性深受全球开发者和用户喜爱。
3. Android 系统架构
Android 是一个基于 Linux 的开源软件栈,适用于各种类型的android 设备。 下图显示了 Android 平台的主要组件。图片来源于Android官网
3.1 Linux Kernel
Android 平台的基础是 Linux 内核。 例如,Android Runtime(ART) 依赖于 Linux 内核来实现线程和低级内存管理等底层功能。
使用 Linux 内核使 Android 能够利用关键的安全功能,而且能让设备制造商在熟悉的内核上开发硬件驱动程序。
3.2 Hardware Abstraction Layer (HAL)
硬件抽象层 (HAL) 提供标准接口,将设备硬件功能暴露给更高级别的 Java API 框架。 HAL 由多个库模块组成,每个库模块都为特定类型的硬件组件(例如摄像头或蓝牙模块)实现一个接口。 当Framework API 调用或访问设备硬件时,Android 系统会加载该硬件组件的库模块。
3.3 运行时 + 系统库
3.3.1 Android Runtime
对于运行 Android 5.0(API 级别 21)或更高版本的设备,每个应用程序都在自己的进程中运行,并使用自己的 Android 运行时 (ART) 实例。 ART 旨在通过执行 DEX 文件在低内存设备上运行多个虚拟机,DEX是一种专为 Android 设计的字节码格式,已针对最小内存占用进行了优化。构建工具,例如 d8,将 Java 源代码编译成 DEX 字节码,就可以在 Android 平台上运行。
ART 的一些主要功能包括:
- 提前 (AOT) 和即时 (JIT) 编译
- 优化的垃圾收集 (GC)
- 在 Android 9(API 级别 28)及更高版本上,将应用程序包的 Dalvik 可执行格式 (DEX) 文件转换为更紧凑的机器代码。
- 更好的调试支持,包括专用的采样分析器、详细的诊断异常和崩溃报告,以及设置观察点以监控特定字段的能力
在 Android 5.0(API 级别 21)之前,Dalvik 是 Android 运行时。如果您的应用程序在 ART 上运行良好,那么它应该也可以在 Dalvik 上运行,但反之可能并非如此。
Android 还包括一组核心运行时库,它们提供 Java 编程语言的大部分功能,包括 Java API 框架使用的一些 Java 8 语言特性。
3.3.1 Native C/C++ Libraries
许多Android 系统核心组件和服务,例如 ART 和 HAL,都是由native 代码(c/c++)构建的, 这些native 代码依赖由C 和 C++ 编写的native 库。 Android 平台提供的 Java Framework API 将其中一些native库的功能公开给应用程序。 例如,您可以通过 Android 框架的 Java OpenGL API 访问 OpenGL ES,在应用程序中支持绘制和操作 2D 和 3D 图形。
如果您的应用程序是基于C 或 C++ 代码,您可以使用 Android NDK 直接从您的native代码访问其中一些native 平台库。
3.4 Java API Framework
您可以通过调用 Java API 来使用 Android 操作系统的整个功能集。 这些 API 通过简化核心、模块化系统组件和服务的重用,构成了您创建 Android 应用程序所需的构建块,其中包括:
- View System: 丰富且可扩展的View系统,可用于构建应用程序的 UI,包括列表、网格、文本框、按钮,甚至是可嵌入的 Web 浏览器
- Resource Manager 资源管理器,提供对非代码资源的访问,例如本地化字符串、图形和布局文件
- Notificatioin Manager 一个通知管理器,使所有应用程序都可以在状态栏中显示自定义通知
- Activity Manager 一个管理应用程序生命周期并提供通用导航回栈的Activity 管理器
- Content Provider 使应用程序能够访问来自其他应用程序(例如联系人应用程序)的数据或共享自己的数据的content provider 提供程序
Android 系统程序使用的 Framework API, 开发人员也可以完全访问。
3.5 System Apps
Android 自带的核心应用程序: 电子邮件、短信、日历、互联网浏览、联系人等。 平台附带的应用程序与用户选择安装的应用程序相比没有特殊地位。 因此,第三方应用程序可以成为用户的默认网络浏览器、SMS Messenger,甚至是默认键盘(某些例外情况适用,例如系统的设置应用程序)。
系统应用程序既可以作为用户应用程序,也可以作为关键功能供开发人员从他们自己的应用程序访问。 例如,如果您的应用程序想要发送 SMS 消息时,您不需要自己构建该功能 - 您可以调用已安装的任何 SMS 应用程序,来向指定的收件人发送消息。
Reference
- Android 架构介绍