Android 系统架构
Android 系统架构分层
文章目录
- Android 系统架构分层
- 1.安卓四层架构
- **一、Linux 内核层(Linux Kernel)**
- **二、硬件抽象层(Hardware Abstraction Layer, HAL)**
- **三、系统运行时库层(Libraries & Android Runtime)**
- 1. C/C++ 系统库
- 2. Android 运行时(ART)
- **四、应用框架层(Application Framework)**
- **总结:五层架构的协作流程**
1.安卓四层架构
从上到下依次是: 应用层
、应用架构层
、系统运行库层
、硬件抽象层
和Linux内核层
,如图:
一、Linux 内核层(Linux Kernel)
位置:架构最底层,基于 Linux 内核(如 Android 14 基于 Linux 5.15+)。
作用:提供硬件基础支持和核心系统服务,是 Android 与硬件交互的桥梁。
核心功能:
- 硬件驱动管理:包括 CPU 调度、内存管理(MMU)、设备驱动(摄像头、屏幕、传感器等)、网络协议栈(TCP/IP)、文件系统(ext4、f2fs)等。
- 安全与权限控制:通过 Linux 的用户权限(UID/GID)、进程隔离(PID)等机制,保证不同应用和进程的独立运行。
- 电源管理:通过内核的电源管理模块(如 PMIC 驱动)实现休眠、唤醒、低功耗模式等。
- 进程间通信(IPC)基础:提供管道、信号量等底层 IPC 机制,为上层的 Binder 等机制提供支持。
举例:当用户触摸屏幕时,触摸屏的硬件驱动会将信号传递给 Linux 内核,再由内核转发给上层处理。
二、硬件抽象层(Hardware Abstraction Layer, HAL)
位置:位于 Linux 内核层之上,是连接内核驱动与上层框架的中间层。
作用:屏蔽硬件差异,为上层提供统一的硬件操作接口,使 Android 系统能兼容不同厂商的硬件(如不同型号的摄像头、传感器)。
核心功能:
- 硬件接口标准化:针对每种硬件(如相机、音频、传感器)定义统一的接口(如
Camera HAL
、Audio HAL
),厂商需按照接口实现具体驱动逻辑。 - 隔离硬件细节:上层框架(如应用框架层)无需关心硬件的具体实现,只需调用 HAL 提供的接口即可操作硬件。
- 适配不同硬件:厂商可在不修改上层代码的情况下,通过修改 HAL 实现来适配自家硬件。
举例:不同手机厂商的摄像头硬件不同,但通过Camera HAL
接口,上层的相机应用框架可以统一调用open()
、capture()
等方法控制摄像头。
三、系统运行时库层(Libraries & Android Runtime)
位置:位于 HAL 之上,为上层提供核心的库支持和运行环境。
组成:包括C/C++ 系统库和Android 运行时(ART) 两部分。
1. C/C++ 系统库
提供底层功能支持,上层框架和应用通过 JNI(Java Native Interface)调用这些库:
- Bionic:Android 的 C 标准库,基于 BSD 修改,适配移动设备,提供内存管理、字符串处理等基础功能。
- Media Framework:多媒体处理库,支持音频、视频的编码 / 解码(如 MP3、H.264)。
- Surface Manager:管理屏幕显示,负责多窗口的合成与渲染。
- SQLite:轻量级数据库引擎,支持应用数据的本地存储(如联系人、短信数据)。
- OpenGL ES:2D/3D 图形渲染库,用于游戏、UI 动画等图形处理。
- WebKit:浏览器引擎,支持网页渲染(如 WebView 组件)。
2. Android 运行时(ART)
- 作用:负责 Android 应用的运行环境,替代了早期的 Dalvik 虚拟机(Android 5.0 起全面使用 ART)。
- 核心功能
- 虚拟机管理:将应用的 DEX 字节码(Android 特有的字节码格式)编译为机器码(通过 AOT 预编译或 JIT 即时编译),提升运行效率。
- 内存管理:包括垃圾回收(GC)、内存分配 / 释放,优化移动设备的内存使用。
- 线程管理:支持多线程调度,与 Linux 内核的线程机制结合,实现并发处理。
四、应用框架层(Application Framework)
位置:位于系统运行时库层之上,提供面向开发者的 API,是安卓开发的核心框架。
作用:封装复杂的底层逻辑,提供标准化的组件和服务,简化应用开发。
核心组件与服务:
- 四大组件:
- Activity:管理应用的界面与用户交互(如一个页面对应一个 Activity)。
- Service:后台运行的服务(如音乐播放、下载任务),无界面。
- Broadcast Receiver:接收系统或应用发出的广播(如电量低、网络变化)并响应。
- Content Provider:实现跨应用数据共享(如联系人应用通过 Content Provider 向其他应用提供联系人数据)。
- 核心服务:
- Activity Manager:管理 Activity 的生命周期、任务栈(如启动、暂停、销毁 Activity)。
- Package Manager:管理应用的安装、卸载、权限验证(如解析 APK 文件、检查应用权限)。
- Window Manager:管理窗口的创建、显示、焦点切换(如弹窗、全屏显示)。
- Notification Manager:管理通知的展示(如状态栏通知、横幅通知)。
- Binder IPC:Android 特有的跨进程通信机制,用于不同进程间的调用(如应用调用系统服务)。
五、应用层(Applications)
位置:架构最上层,是用户直接接触的层。
组成:包括系统应用和第三方应用。
- 系统应用:Android 系统预装的应用,如 launcher(桌面)、电话、短信、相机、设置等,通常由系统厂商开发,基于应用框架层实现。
- 第三方应用:开发者通过 Android SDK 开发的应用,如微信、抖音、游戏等,运行在应用层,依赖底层框架提供的服务。
运行机制:应用以 APK(Android Package)文件形式安装,运行在独立的进程中(由 ART 管理),通过应用框架层与底层交互。
总结:五层架构的协作流程
以 “用户点击相机图标拍照” 为例:
- 应用层:相机应用接收用户点击事件,通过
Intent
请求启动拍照功能。 - 应用框架层:
Activity Manager
调度相机页面,Camera Manager
(系统服务)通过 Binder 调用底层。 - 系统运行时库层:
Camera Framework
(C++ 库)通过 JNI 调用 HAL 接口。 - HAL 层:
Camera HAL
将上层请求转换为硬件操作指令,传递给内核驱动。 - Linux 内核层:摄像头驱动控制硬件完成拍照,将图像数据逐级返回给应用层,最终显示在屏幕上。