Android 系统架构

Android 系统架构分层

文章目录

  • [Android 系统架构分层](#Android 系统架构分层)
    • 1.安卓四层架构
      • [**一、Linux 内核层(Linux Kernel)**](#一、Linux 内核层(Linux Kernel))
      • [**二、硬件抽象层(Hardware Abstraction Layer, HAL)**](#二、硬件抽象层(Hardware Abstraction Layer, HAL))
      • [**三、系统运行时库层(Libraries & Android Runtime)**](#三、系统运行时库层(Libraries & Android Runtime))
        • [1. C/C++ 系统库](#1. C/C++ 系统库)
        • [2. Android 运行时(ART)](#2. Android 运行时(ART))
      • [**四、应用框架层(Application Framework)**](#四、应用框架层(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 HALAudio 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 管理),通过应用框架层与底层交互。

总结:五层架构的协作流程

以 "用户点击相机图标拍照" 为例:

  1. 应用层 :相机应用接收用户点击事件,通过Intent请求启动拍照功能。
  2. 应用框架层Activity Manager调度相机页面,Camera Manager(系统服务)通过 Binder 调用底层。
  3. 系统运行时库层Camera Framework(C++ 库)通过 JNI 调用 HAL 接口。
  4. HAL 层Camera HAL将上层请求转换为硬件操作指令,传递给内核驱动。
  5. Linux 内核层:摄像头驱动控制硬件完成拍照,将图像数据逐级返回给应用层,最终显示在屏幕上。
相关推荐
fundroid5 小时前
Android Studio + Gemini:重塑安卓 AI 开发新范式
android·android studio·ai编程
vortex56 小时前
谷歌黑客语法挖掘 SQL 注入漏洞
android·数据库·sql
-指短琴长-9 小时前
MySQL快速入门——基本查询(下)
android·mysql·adb
MarkHD9 小时前
蓝牙钥匙 第67次 蓝牙大规模部署挑战:高密度环境下的性能优化与系统架构设计
性能优化·系统架构
stevenzqzq10 小时前
android lambda回调
android
林北北的霸霸12 小时前
django初识与安装
android·mysql·adb
snakecy13 小时前
系统架构设计师学习大纲目录
学习·系统架构
Java 码农14 小时前
MySQL EXPLAIN 详解与优化指南
android·mysql·adb
snakecy14 小时前
树莓派学习资料共享
大数据·开发语言·学习·系统架构
stevenzqzq18 小时前
Android Hilt 入门教程_传统写法和Hilt写法的比较
android