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 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 管理),通过应用框架层与底层交互。

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

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

  1. 应用层 :相机应用接收用户点击事件,通过Intent请求启动拍照功能。
  2. 应用框架层 :Activity Manager调度相机页面,Camera Manager(系统服务)通过 Binder 调用底层。
  3. 系统运行时库层 :Camera Framework(C++ 库)通过 JNI 调用 HAL 接口。
  4. HAL 层 :Camera HAL将上层请求转换为硬件操作指令,传递给内核驱动。
  5. Linux 内核层:摄像头驱动控制硬件完成拍照,将图像数据逐级返回给应用层,最终显示在屏幕上。
相关推荐
千里马学框架3 天前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
美狐美颜SDK开放平台3 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
AFinalStone3 天前
Android7 SystemUI源码解析(七)Keyguard锁屏模块深度解析
android·systemui
致远ccc3 天前
Google Play 上架前如何测试 App?多国家 Android 环境测试
android·app测试·googleplay·多国家应用测试
ttyyttemo3 天前
Kotlin 协程中的 Job 结构化并发与取消
android
sun0077003 天前
tbox 4g/5g切换,导致wan ip 改变,导致车机旧网络不可用。需要重启车机才行
android
其实防守也摸鱼3 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
AFinalStone3 天前
Android7 SystemUI 源码解析(四)NavigationBar 导航栏与 SystemBars
android·systemui
JMchen3 天前
属性动画原理与高级动画实现
android·kotlin·canvas
AFinalStone3 天前
Android7 SystemUI 源码解析(二)启动流程深度解析
android·systemui