本文主要从 Android版本与对应的linux内核版本关系 和 Android系统架构 两部分来讨论。
1、Android版本与Linux内核的关系
(1)Android最初使用Linux2.6作为其内核,随着Android与Linux内核的发展,不同版本的Android使用的linux内核版本差异较大,所以不同Android版本驱动可能并不通用。
下表显示了目前所有Android版本与linux内核版本的联系。
Code name | Android Version number | Linux Kernel Number | Initial release date | API level |
1.0 | 23-Sep-08 | 1 | ||
1.1 | 9-Feb-09 | 2 | ||
Cupcake | 1.5 | 2.6.27 | 27-Apr-09 | 3 |
Donut | 1.6 | 2.6.29 | 15-Sep-09 | 4 |
Eclair | 2.0–2.1 | 2.6.29 | 26-Oct-09 | 5–7 |
Froyo | 2.2–2.2.3 | 2.6.32 | 20-May-10 | 8 |
Gingerbread | 2.3–2.3.7 | 2.6.35 | 6-Dec-10 | 9–10 |
Honeycomb | 3.0–3.2.6 | 2.6.36 | 22-Feb-11 | 11–13 |
Ice Cream Sandwich | 4.0–4.0.4 | 3.0.1 | 18-Oct-11 | 14–15 |
Jelly Bean | 4.1–4.3.1 | 3.4.0 | 9-Jul-12 | 16–18 |
KitKat | 4.4–4.4.4, 4.4W-4.4W.2 | 31-Oct-13 | 19–20 | |
Lollipop | 5.0–5.1.1 | 12-Nov-14 | 21–22 | |
Marshmallow | 6.0–6.0.1 | 5-Oct-15 | 23 | |
N | Developer Preview 2 |
(2)随着市场的发展,Android的不同版本被受众接受的程度大有不同。下图显示了自2009年12月以来,全球范围内Android版本使用的频率分布的比例。
从图中可以看出,2016年2月份时,Android 4.4 KitKat 版本是目前最广泛使用的版本,占到了所有Android设备使用率的35.5%。屈居第二的是占到了市场份额34.1%的Android版本 Lollipop 。
2、Android System Architecture
Android系统从下至上分为4层:linux内核,Android核心库,及Android运行时环境(Android Runtime) ,应用程序框架,应用程序及小部件,如下图所示。
Android的 HAL 层是为了一些硬件提供商提出的保护专利的驱动程序而产生的,简而言之,就是为了避开 linux kernel 的 GPL License 的束缚。Android把控制硬件的动作都放在了用户空间中,而在 kernel driver 中只有最简单的读/写寄存器的操作,而完全去掉了各种功能性的操作(如控制逻辑),这些能够体现硬件特性的操作都放在了Android的 HAL 层。
Android的 HAL 层如下图所示。
参考资料:
1、Wikipedia-Android Version
2、《Android 系统移植与驱动开发》 华清远见移动互联网学院 郑萌 等编著