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 内核层:摄像头驱动控制硬件完成拍照,将图像数据逐级返回给应用层,最终显示在屏幕上。
相关推荐
Mike_Wuzy2 小时前
【Android】发展历程
android
开酒不喝车2 小时前
安卓Gradle总结
android
阿华的代码王国3 小时前
【Android】PopupWindow实现长按菜单
android·xml·java·前端·后端
稻草人不怕疼5 小时前
Android 15 全屏模式适配:A15TopView 自定义组件分享
android
静默的小猫5 小时前
LiveDataBus消息事件总线之二-(不含反射和hook)
android
二价亚铁5 小时前
系统架构设计专业技能 · 计算机组成与结构
系统架构
~央千澈~6 小时前
05百融云策略引擎项目交付-laravel实战完整交付定义常量分文件配置-独立建立lib类处理-成功导出pdf-优雅草卓伊凡
android·laravel·软件开发·金融策略
_一条咸鱼_6 小时前
Android Runtime冷启动与热启动差异源码级分析(99)
android·面试·android jetpack
用户2018792831676 小时前
Java序列化之幽灵船“Serial号”与永生契约
android·java
用户2018792831676 小时前
“对象永生”的奇幻故事
android·java