Android 开发之旅:android 架构,并发知识体系大全
2.4、Application Framework
2.5、Applications
3、总结
1、架构图直观
下面这张图展示了 Android 系统的主要组成部分:
可以很明显看出,Android 系统架构由 5 部分组成,分别是:Linux Kernel、Android Runtime、Libraries、Application Framework、Applications。第二部分将详细介绍这 5 个部分。
2、架构详解
现在我们拿起手术刀来剖析各个部分。其实这部分 SDK 文档已经帮我们做得很好了,我们要做的就是拿来主义,然后再加上自己理解。下面自底向上分析各层。
2.1、Linux Kernel
Android 基于 Linux 2.6 提供核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。Linux Kernel 也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。
如果你学过计算机网络知道 OSI/RM,就会知道分层的好处就是使用下层提供的服务而为上层提供统一的服务,屏蔽本层及以下层的差异,当本层及以下层发生了变化不会影响到上层。也就是说各层各司其职,各层提供固定的 SAP(Service Access Point),专业点可以说是高内聚、低耦合。
如果你只是做应用开发,就不需要深入了解 Linux Kernel 层。
2.2、Android Runtime
Android 包含一个核心库的集合,提供大部分在 Java 编程语言核心类库中可用的功能。每一个 Android 应用程序是 Dalvik 虚拟机中的实例,运行在他们自己的进程中。Dalvik 虚拟机设计成,在一个设备可以高效地运行多个虚拟机。Dalvik 虚拟机可执行文件格式是.dex,dex 格式是专为 Dalvik 设计的一种压缩格式,适合内存和处理器速度有限的系统。
大多数虚拟机包括 JVM 都是基于栈的,而 Dalvik 虚拟机则是基于寄存器的。两种架构各有优劣,一般而言,基于栈的机器需要更多指令,而基于寄存器的机器指令更大。dx 是一套工具,可以將 Java .class 转换成 .dex 格式。一个 dex 文件通常会有多个.class。由于 dex 有時必须进行最佳化,会使文件大小增加 1-4 倍,以 ODEX 结尾。
Dalvik 虚拟机依赖于 Linux 内核提供基本功能,如线程和底层内存管理。
2.3、Libraries
Android 包含一个 C/C++库的集合,供 Android 系统的各个组件使用。这些功能通过 Android 的应用程序框架(application framework)暴露给开发者。下面列出一些核心库:
**系统 C
库**——标准 C 系统库(libc)的 BSD 衍生,调整为基于嵌入式 Linux 设备
媒体库——基于 PacketVideo 的 OpenCORE。这些库支持播放和录制许多流行的音频和视频格式,以及静态图像文件,包括 MPEG4、 H.264、 MP3、 AAC、 AMR、JPG、 PNG
界面管理——管理访问显示子系统和无缝组合多个应用程序的二维和三维图形层
LibWebCore——新式的 Web 浏览器引擎,驱动 Android 浏览器和内嵌的 web 视图
SGL——基本的 2D 图形引擎
3D 库——基于 OpenGL ES 1.0 APIs 的实现。库使用硬件 3D 加速或包含高度优化的 3D 软件光栅
FreeType?——位图和矢量字体渲染
SQLite?——所有应用程序都可以使用的强大而轻量级的关系数据库引擎
评论