Android的系统架构采用了分层架构的思想,如图。从上层到底层共包括四层:
1.应用层
2.应用框架层
3.系统库和Android虚拟机
4.Linux内核
image.png
应用层
Android的应用程序主要是用户界面(User Interface)方面的,通常以JAVA程序编写,其中还可以包含各种资源文件(放置在res目录中)JAVA程序及相关资源经过编译后,将生成一个APK包。
Android本身提供了主屏幕(Home),联系人(Contact),电话(Phone),浏览器(Browers)等众多的核心应用。
同时应用程序的开发者还可以使用应用程序框架层的API实现自己的程序。
应用框架层
Android的应用程序框架为应用程序层的开发者提供APIs,它实际上是一个应用程序的框架。
系统库和Android虚拟机
该层分为两部分:系统库和android虚拟机。
系统库
主要为C/C++库,这些库能被Android系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务。
以下是一些核心库:
C库: 一个从 BSD 继承来的标准 C 系统函数库( libc ), 它是专门为基于 embedded linux 的设备定制的。
媒体库: 基于 PacketVideo OpenCORE;该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 。
SGL: 2D图像引擎。
OpenGL ES: 该库可以使用硬件 3D加速(如果可用)或者使用高度优化的3D软加速。
界面管理工具(Surface Management: 对显示子系统的管理,并且为多个应用程序提 供了2D和3D图层的无缝融合。
SQLite: 一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。
LibWebCore: 一个最新的web浏览器引擎用,支持Android浏览器和一个可嵌入的web视图。
FreeType: 图和矢量字体的功能。
Android 的各种库一般是以系统中间件的形式提供的,它们均有的一个显著特点就是与移动设备的平台的应用密切相关。
Android 运行环境主要指的虚拟机技术——Dalvik。Dalvik虚拟机和一般JAVA虚拟机(Java VM)不同,它执行的不是JAVA标准的字节码(bytecode )而是Dalvik可执行格式(.dex)中执行文件。在执行的过程中,每一个应用程序即一个进程(Linux的一个Process)。 二者最大的区别在于Java VM是以基于栈的虚拟机(Stack-based),而Dalvik是基于寄存器的虚拟机(Register-based)。显然,后者最大的好处在于可以根据硬件实现更大的优化,这更适合移动设备的特点。
Linux内核
Android 的核心系统服务依赖于 Linux 2.6 内核,如安全性,内存管理,进程管理, 网络协议栈和驱动模型。 Linux 内核也同时作为硬件和软件栈之间的抽象层。
Android源码版本和代号
代号 | CodeName | 版本 | API级别 |
---|---|---|---|
馅饼 | Pie | 9 | API 级别 28 |
奥利奥 | Oreo | 8.1.0 | API 级别 27 |
奥利奥 | Oreo | 8.0.0 | API 级别 26 |
牛轧糖 | Nougat | 7.1 | API 级别 25 |
牛轧糖 | Nougat | 7.0 | API 级别 24 |
棉花糖 | Marshmallow | 6.0 | API 级别 23 |
棒棒糖 | Lollipop | 5.1 | API 级别 22 |
棒棒糖 | Lollipop | 5.0 | API 级别 21 |
奇巧 | KitKat | 4.4-4.4.4 | API 级别 19 |
果冻豆 | Jelly Bean | 4.3.x | API 级别 18 |
果冻豆 | Jelly Bean | 4.2.x | API 级别 17 |
果冻豆 | Jelly Bean | 4.1.x | API 级别 16 |
冰淇淋夹心 | Ice Cream Sandwich | 4.0.3-4.0.4 | API 级别 15,NDK 8 |
冰淇淋夹心 | Ice Cream Sandwich | 4.0.1-4.0.2 | API 级别 14,NDK 7 |
蜂窝 | Honeycomb | 3.2.x | API 级别 13 |
蜂窝 | Honeycomb | 3.1 | API 级别 12,NDK 6 |
蜂窝 | Honeycomb | 3.0 | API 级别 11 |
姜饼 | Gingerbread | 2.3.3-2.3.7 | API 级别 10 |
姜饼 | Gingerbread | 2.3-2.3.2 | API 级别 9,NDK 5 |
冻酸奶 | Froyo | 2.2.x | API 级别 8,NDK 4 |
松饼 | Eclair | 2.1 | API 级别 7,NDK 3 |
松饼 | Eclair | 2.0.1 | API 级别 6 |
松饼 | Eclair | 2.0 | API 级别 5 |
甜甜圈 | Donut | 1.6 | API 级别 4,NDK 2 |
纸杯蛋糕 | Cupcake | 1.5 | API 级别 3,NDK 1 |
(无代号) | (无代号) | 1.1 | API 级别 2 |
(无代号) | (无代号) | 1.0 | API 级别 1 |
作者:漫步_9378
链接:https://www.jianshu.com/p/6f4e349a14c2