1. Android简介
Android是一种基于Linux内核的自由及开放源代码的操作系统。最初是由安迪·鲁宾(Andy Rubin)开发的一款相机操作系统。2005年8月被Google收购。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机、智能手表等。2011年第一季度,Android在全球的手机市场份额首次超过塞班系统,跃居全球第一。2017年3月,Android超过Windows成为全球第一大操作系统。2022年Android的活跃设备数量突破30亿。
Android版本升级比较快,现在几乎以每年一版的速度更新,截至2023年2月,API等级目前已更新到33,具体如表1-1所示。
表1-1 Android版本名称与发布时间
年份 | 名称 | 版本名 | API等级 |
2024 | Android 15 | 15.0 | 35 |
2023 | Android 14 | 14.0 | 34 |
2022 | Android 13(Tiramisu) | 13.0 | 33 |
2021 | Android 12L(Sv2) | 12L | 32 |
2021 | Android 12(S) | 12.0 | 31 |
2020 | Android 11(R) | 11.0 | 30 |
2019 | Android 10(Q) | 10.0 | 29 |
2018 | Android Pie | 9.0 | 28 |
2017 | Android Oreo | 8.0-8.1 | 26-27 |
2016 | Android Nougat | 7.0-7.1.2 | 24-25 |
2015 | Android Marshmallow | 6.0-6.0.1 | 23 |
2014 | Android Lollipop | 5.0-5.1.1 | 21-22 |
2013 | Android KitKat | 4.4-4.4.4 | 19-20 |
2012 | Android Jelly Bean | 4.1-4.3 | 16-18 |
2011 | Android Ice Cream Sandwich | 4.0.1-4.0.4 | 14-15 |
2011 | Android Honeycomb | 3.0-3.2 | 11-13 |
2010 | Android Gingerbread | 2.3-2.3.7 | 9-10 |
2010 | Android Froyo | 2.2 | 8 |
2009 | Android Eclair | 2.0-2.1 | 5-7 |
2008 | Android Donut | 1.6 | 4 |
2008 | Android Cupcake | 1.5 | 3 |
2008 | - | 1.1 | 2 |
2008 | - | 1.0 | 1 |
2023年2月9日,Google 发布了 Android 14 的首个开发者预览版(Developer Preview)。Android 14 重点关注大屏和跨设备体验的改进,特别是平板电脑和可折叠设备,增强对后台App的管控,提升待机续航,把文本缩放比例限制从130%提升到200%,引入非线性字体缩放曲线,引入“应用克隆”了,支持App双开等。此外,Android 14将阻止API等级为 22 或更早版本的旧App的安装。
2. Android体系结构
Android体系结构分为五层,从上到下依次为应用层(App)、框架层(API Framework)、系统库和运行时层(Native C/C++ Libraries & Android Runtime)、硬件抽象层(Hardware Abstraction Layer)、内核层(Linux Kernal)。
应用层分为系统应用和用户应用。系统应用包括拨号、短信、通信录等。用户应用就是用户下载的应用,本书介绍的就是用户应用的开发。
框架层包括Android应用开发需要的框架。框架层提供了应用层需要调用的接口,应用层使用这些接口实现特定的功能。框架层包括Activity Manager(活动管理器)、Window Manager(窗口管理器)、Content Providers(内容提供者)、View System(视图系统)、Notification Manager(通知管理器)、Package Manager(包管理器)等组件。
系统库和Android运行时层是框架层的支撑,是连接框架层与硬件抽象层的纽带。系统库包括一些C/C++库,如SurfaceManager、SQLite、SGL、FreeType等。Android运行时 (ART) 是 Android 上的应用和部分系统服务使用的托管式运行时。ART 及其前身 Dalvik 是专为 Android打造的。作为运行时的 ART 可执行 Dalvik 可执行文件并遵循 Dex 字节码规范。
硬件抽象层Android HAL(Hardware Abstract Layer)是对硬件设备的抽象和封装,为Android在不同硬件设备提供统一的访问接口。HAL处于Android framework和Linux kernel driver之间。HAL屏蔽了不同硬件设备的差异,为Android提供了统一的访问硬件设备的接口。HAL层帮助硬件厂商隐藏了设备相关模块的核心细节。
内核层基于上游 Linux 长期支持 (LTS) 内核。在 Google,LTS 内核会与 Android 专用补丁结合,形成所谓的“Android 通用内核 (ACK)”。