当前位置: 首页 > news >正文

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 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 内核层:摄像头驱动控制硬件完成拍照,将图像数据逐级返回给应用层,最终显示在屏幕上。
http://www.dtcms.com/a/302835.html

相关文章:

  • 阿里云 API 网关 x OKG:游戏连接治理的「最后一公里」
  • 阿里云正式开源 LoongSuite:打造 AI 时代的高性能低成本可观测采集套件
  • 电脑不小心误删了文件怎么恢复??
  • AI资讯日报 - 2025年07月28日
  • EXCEL批量生成超链接引用无效的情况
  • Kotlin中Flow
  • 基于Spring Boot的装饰工程管理系统(源码+论文)
  • 一个典型的微控制器MCU包含哪些模块?
  • kafka开启Kerberos使用方式
  • “本地计算机上的 mysql 服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止”解决方式
  • 算法训练营day34 动态规划② 62.不同路径、63. 不同路径 II、343整数拆分、96.不同的二叉搜索树
  • Kafka 顺序消费实现与优化策略
  • linux diff命令使用教程
  • 最长连续数组
  • 【C++11】列表初始化【{ }使用详解】
  • Facenet(MTCNN+InceptionResnetV1)人脸考勤项目(有缺点,但可用)
  • 境外期货Level2高频Tick历史行情数据获取与应用指南
  • 基于LangGraph Cli的智能数据分析助手
  • MCU 中的 PWM(脉冲宽度调制)是什么?
  • 八大神经网络的区别
  • Java Stream流的使用
  • Open CV图像基本操作可莉版
  • Linux:线程同步与线程互斥
  • PBR技术
  • 杭州网站建设公司,哪家擅长做多语言外贸站?
  • SpringCloude快速入门
  • JVM 笔记:类加载、内存管理、垃圾收集与垃圾收集器
  • binlog与Maxwell 与 慢查询
  • docker排查OOM
  • 图——邻接表基本操作算法实现