Android 系统背景及结构概述
谷歌 Android 系统
1. Android 的历史
Android 一词的本意指“人形机器人”,安迪•鲁宾 (Andy Rubin) 在 2003 年以此名创办了 Android 公司并开始召集团队研发 Android 系统。后于 2005 年被 Google 收购,安迪•鲁宾随后任 Google 工程部副总裁,继续负责 Android 项目的研发工作。
安卓系统(Android)是一款基于 Linux 内核的自由开源的操作系统,主要使用于移动设备,如智能手机和平板电脑。 Google 在 2007 年 11 月 5 日正式对外公布的了这款系统,并以“绿色机器人”的形状作为其 Logo。早期由 Google 开发,后由开放手机联盟(Open Handset Alliance)负责开发。
2. Android 的层级结构
Android 从系统架构上可分为四层结构,自下而上分别是:
- Linux 内核
- 系统运行库
- 应用程序框架
- 应用程序
2.1 Linux 内核
这一层是 Android 的核心系统服务,位于 Android 系统的最底层,直接与硬件设备交互。它依赖于 Linux,负责内存管理、进程管理、设备管理、网络协议栈、安全性和驱动模型等系统级服务。
Linux 内核作为 Android 硬件和软件之间的抽象层,为了更好的为 Android上层应用服务,Google 基于 Linux 做了一些的定制化的修改,具体的修改内容及原因会在后续的教程中陆续提到。
2.2 系统运行库
这一层包含两大块:系统库及 Android 运行时。
-
系统库
这一部分其实就是 C/C++ 库,这些库在 Android 系统中通常以 so 的形式供不同的组件使用,开发者可以通过自己的应用程序使用这些库提供的服务。
-
Android 运行时
Android 采用 Java 作为开发语言,在其运行时中包含了 Java 核心库的大多数功能,并使每一个 Android 应用程序都在它自己的进程中运行,都拥有一个独立的 Dalvik 虚拟机实例。Dalvik 可以保证一个设备可以同时高效地运行多个虚拟系统。
2.3 应用程序框架
这一层是会和用户直接打交道的一层,也是开发者最需要关注的一层。它包含了一系列的服务和系统,其中包括:
- 丰富而又可扩展的视图(Views)
- 内容提供器(Content Providers)
- 资源管理器(Resource Manager)
- 通知管理器(Notification Manager)
- 活动管理器(Activity Manager)
2.4 应用程序
开发者的绝大部分工作都是在这一层完成,通过 Java 编写的应用程序我们可以使用 Android 系统提供的服务来实现我们预期的功能。
每一个应用程序都对应一个 Dalvik 虚拟机,利用跨平台性质,基于 Android 框架开发的应用程序可以运行于任何一台安装有 Android 系统的平台。
本教程的大多数内容也是针对这一层,我们将带领你建立属于自己的第一个 Android 应用程序,并一步步由浅入深的学习 Android 各个细枝末节,让你可以更好的掌握 Android 应用程层序开发。
3. Android 各个版本、代号及 API 级别
从 Android 1.5 开始,Google 发型每一个 Android 版本都用一个甜品的名称作为代号,而代号首字母是从 C 开始以此按照字母顺序排列,而直到 19 年发布的 Android Q 开始,Google 弃用了这一传统,改名为 Android 10。
名称 |
版本号 |
API等级 |
发布时间 |
BuildVersion |
Q |
10.0 |
29 |
2019-09 |
BuildVersionCodes.Q |
Pie |
9.0 |
28 |
2018-08 |
BuildVersionCodes.P |
Oreo |
8.1 |
27 |
2017-12 |
BuildVersionCodes.OMr1 |
Oreo |
8.0 |
26 |
2017-08 |
BuildVersionCodes.O |
Nougat |
7.1 |
25 |
2016-12 |
BuildVersionCodes.NMr1 |
Nougat |
7.0 |
24 |
2016-08 |
BuildVersionCodes.N |
Marshmallow |
6.0 |
23 |
2015-08 |
BuildVersionCodes.M |
Lollipop |
5.1 |
22 |
2015-03 |
BuildVersionCodes.LollipopMr1 |
Lollipop |
5.0 |
21 |
2014-11 |
BuildVersionCodes.Lollipop |
Kitkat Watch |
4.4W |
20 |
2014-06 |
BuildVersionCodes.KitKatWatch |
Kitkat |
4.4 |
19 |
2013-10 |
BuildVersionCodes.KitKat |
Jelly Bean |
4.3 |
18 |
2013-07 |
BuildVersionCodes.JellyBeanMr2 |
Jelly Bean |
4.2-4.2.2 |
17 |
2012-11 |
BuildVersionCodes.JellyBeanMr1 |
Jelly Bean |
4.1-4.1.1 |
16 |
2012-06 |
BuildVersionCodes.JellyBean |
Ice Cream Sandwich |
4.0.3-4.0.4 |
15 |
2011-12 |
BuildVersionCodes.IceCreamSandwichMr1 |
Ice Cream Sandwich |
4.0-4.0.2 |
14 |
2011-10 |
BuildVersionCodes.IceCreamSandwich |
Honeycomb |
3.2 |
13 |
2011-06 |
BuildVersionCodes.HoneyCombMr2 |
Honeycomb |
3.1.x |
12 |
2011-05 |
BuildVersionCodes.HoneyCombMr1 |
Honeycomb |
3.0.x |
11 |
2011-02 |
BuildVersionCodes.HoneyComb |
Gingerbread |
2.3.3-2.3.4 |
10 |
2011-02 |
BuildVersionCodes.GingerBreadMr1 |
Gingerbread |
2.3-2.3.2 |
9 |
2010-11 |
BuildVersionCodes.GingerBread |
Froyo |
2.2.x |
8 |
2010-06 |
BuildVersionCodes.Froyo |
Eclair |
2.1.x |
7 |
2010-01 |
BuildVersionCodes.EclairMr1 |
Eclair |
2.0.1 |
6 |
2009-12 |
BuildVersionCodes.Eclair01 |
Eclair |
2.0 |
5 |
2009-11 |
BuildVersionCodes.Eclair |
Donut |
1.6 |
4 |
2009-09 |
BuildVersionCodes.Donut |
Cupcake |
1.5 |
3 |
2009-05 |
BuildVersionCodes.Cupcake |
Base |
1.1 |
2 |
2009-02 |
BuildVersionCodes.Base11 |
Base |
1.0 |
1 |
2008-10 |
BuildVersionCodes.Base |
4. 小结
本节对 Android 系统的背景及结构做了一个简单的讲解,旨在让大家有一个基本的认识,如果感兴趣的话可以查阅相关资料进行深入了解。下一章我们将带着大家完成开发环境的搭建,这也是进入开发之前的必经之路。