【新手入门】Android基础知识(一):系统架构
目 录
Android 系统架构图
1. 应用
2. JAVA API 框架
3. 原生 C/C++ 库
4. Android 运行时(Android Runtime)
5. 硬件抽象层 (HAL)
6. Linux 内核
参考资料
Android 系统架构图
Android底层内核空间以Linux Kernel作为基石,上层用户空间由Native系统库、Android运行时、JAVA API框架和应用组成,通过系统调用(Syscall)连通系统的内核空间与用户空间。对于用户空间主要采用C++和Java代码编写,通过JNI技术打通用户空间的Java层和Native层(C++/C),从而连通整个系统。下图所示为Android系统架构。

1. 应用
应用程序是 android 架构的顶层,包含在Android设备上运行的所有应用(包括系统应用和第三方应用),它们是Android系统中直接面向用户的部分。
第三方应用都是基于Android提供的SDK(Sofware Development Kit)开发,并受到 SDK接口的约束。系统应用则可以调用整个框架层的接口和模块,其中的很多接口在 SDK 中是隐藏的,因此系统应用具有比第三方应用更多的权利。
2. JAVA API 框架
Java API 框架是指构建应用所依据的一组 Java 类、接口和其他预编译代码,是 Android 的核心部分,为开发人员提供构建应用程序所需的工具和服务。
框架层包括几项重要的服务,可以更轻松地构建功能强大且一致的 Android 应用程序,而无需从头开始创建所有内容。服务如下表所示。
关键组件 | 功能 |
---|---|
Activity Manager (AM) | 管理应用生命周期、任务栈、Activity 切换 |
Window Manager (WM) | 管理应用界面窗口、布局和绘制 |
Content Provider (CP) | 数据访问接口,实现不同应用间的数据共享 |
Notification Manager | 管理通知栏消息 |
Resource Manager | 管理资源文件,如图片、布局、字符串 |
Package Manager (PM) | 管理安装的应用包、权限信息 |
Telephony Manager / Location Manager | 提供电话、定位等硬件功能访问 |
View 系统 / UI 组件 | 提供 Button、TextView、RecyclerView 等界面元素 |
其他系统服务 | SensorManager、MediaPlayer、ClipboardManager 等 |
3. 原生 C/C++ 库
Native系统库主要基于C\C++实现的一些原生组件,开发者需要通过 Java API 框架层调用这些库。
库名称 | 功能描述 |
---|---|
OpenGL ES | 用于 2D 和 3D 图形渲染,提供高性能的图形处理能力,直接与 GPU 交互,可实现复杂图形效果。 |
Media Framework | 基于 PacketVideo OpenCORE,支持多种常用音频、视频格式的回放和录制,以及静态图像文件的处理。 |
SQLite | 一个轻量级的关系型数据库引擎,为所有应用程序提供数据存储和管理功能。 |
Surface Manager | 对显示子系统进行管理,为多个应用程序提供 2D 和 3D 图层的无缝融合。 |
Libc | 标准 C 系统函数库,专门为嵌入式 Linux 设备定制,提供基础的系统调用和功能支持。 |
OpenMAX AL | 一个多媒体应用程序的标准框架,用于构建和管理多媒体应用程序。 |
Webkit | 用于 WebView 的功能实现,支持网页浏览和渲染。 |
4. Android 运行时(Android Runtime)
Android 运行时主要包括以下两个关键部分:
- 核心库(Core Libraries):提供了一系列的 Java 和 Kotlin 标准库,是 Android 应用开发的基础。
- 运行时环境(ART):负责运行Android应用程序。
从 Android 5.0(Lollipop)开始,Android 运行时默认使用 ART(Android Runtime),取代早期的 Dalvik 虚拟机。Dalvik 虚拟机采用 JIT(Just-In-Time)的解释器在程序运行时进行编译,而ART 通过预先编译(Ahead-Of-Time, AOT)应用程序代码为机器代码,显著提高了应用程序的运行效率,但同时ART需要更多的存储空间。
5. 硬件抽象层 (HAL)
硬件抽象层(Hardware Abstraction Layer,HAL)主要提供对Linux内核驱动的封装,这种封装可以向上提供各种设备的编程接口,并且隐藏底层实现细节。HAL 让 Android 无需关注较低级别的驱动程序实现,当框架API请求访问设备硬件时,Android系统将为该硬件加载相应的库模块。
6. Linux 内核
Android系统基于Linux内核实现,同时在该基础上添加了Android专用的驱动,例如:Binder。由于Linux系统的优秀性,基于Linux在安全性、内存管理、进程管理等都有了很大优势。
Linux内核提供安全性、内存管理、进程管理、网络协议栈和驱动模型等核心系统服务,同时也是系统硬件和软件叠层之间的抽象层。
参考资料:
1.《Android全面分析》
2.《最强Android书:架构大剖析》
3. 架构概览 | Android Open Source Project
4. Android 架构 - GeeksforGeeks
5.《疯狂Android讲义》