news 2026/6/9 14:02:06

为什么有的 Android 架构图是 4 层,有的却是 5 层?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
为什么有的 Android 架构图是 4 层,有的却是 5 层?

一句话结论先给出:
4 层结构是早期 / 实现视角的 Android 架构图;
5 层结构是现代 / 工程化 / 系统级的 Android 架构认知。
两者不冲突,只是分层粒度和时代背景不同


一、你可能见过的那张「4 层 Android 架构图」

很多教材、博客、老 PPT 里都会出现这样一张图:

Application Application Framework Libraries + Android Runtime Linux Kernel

看起来只有4 层,而且没有HAL

这正是很多人(包括已经有系统认知的开发者)产生困惑的根源:

❓ Android 不是应该有 HAL 吗?
❓ 不是 5 层结构吗?
❓ 是我记错了,还是图画错了?

答案是:你没记错,图也没画错。


二、你现在掌握的「5 层结构」是什么?

在现代 Android 系统工程、AOSP、Framework 学习中,更常用、也更严谨的是这一套:

① Application ② Application Framework ③ HAL(Hardware Abstraction Layer) ④ Native / Runtime(可合并) ⑤ Linux Kernel ← 最底层

这套分层,能够完整解释:

  • Framework 如何访问硬件
  • Binder 在哪些层之间通信
  • Treble / Vendor 分区为什么成立
  • 系统升级如何与厂商解耦

👉这是“工程级正确”的 Android 架构认知。


三、那问题来了:为什么早期要画成 4 层?

1️⃣ 历史原因:那是 Dalvik 时代的真实实现状态

那张 4 层图,主要来源于:

  • Android 1.x ~ 2.x 官方文档
  • Dalvik VM 时代
  • Android 早期对外架构宣传

在那个阶段:

  • HAL没有稳定接口
  • 硬件相关代码大量混在:
    • Native Libraries
    • Framework 内部
    • 厂商私有代码
  • HAL 更像是“实现细节”,而不是“架构边界”

👉 从实现上看,确实就是一整块Libraries + Runtime


2️⃣ 认知角度:那是「实现视角」,不是「系统抽象视角」

4 层图解决的是一个问题:

Android 是如何从 App 一直跑到 Linux Kernel 的?

它并不关心:

  • Framework 和厂商如何解耦
  • 硬件适配的长期维护成本
  • 系统升级稳定性

所以它选择:

把 HAL + Native + Runtime 视为一个“实现黑盒”

画出来清晰,但不细。


3️⃣ 当时,HAL 还不是“必须被单独拎出来的层”

在 Treble 之前:

  • HAL 接口不稳定
  • Framework 经常直接依赖厂商实现
  • 系统升级 = 厂商大改代码

📌HAL 在架构中的战略地位,是后来才确立的。


四、HAL 真正成为“独立一层”的转折点

🚀 Android 8.0:Project Treble

Treble 对 Android 架构做了决定性改变:

  1. HAL 接口标准化(HIDL / AIDL)
  2. HAL 进程化(独立 Service)
  3. System / Vendor 分区彻底拆分

从这一刻开始:

HAL 不再是实现细节,而是系统稳定边界。

👉 不单独画 HAL,已经无法解释 Android 的工作方式。


五、为什么你现在学 Android,必须用 5 层结构?

因为你关心的已经是这些问题:

  • Framework 为什么不直接操作驱动?
  • Binder 为什么能跨 Framework 和 HAL?
  • 为什么系统可以升级,厂商 ROM 不用全重做?
  • Vendor 分区为什么可以长期不变?

📌这些问题,4 层图解释不了。

而 5 层结构,刚好一一对齐。


六、一个对照表,彻底对齐两种画法

现代 5 层认知早期 4 层图中的位置
ApplicationApplication
Application FrameworkApplication Framework
HALLibraries(被合并)
Native LibrariesLibraries
Android RuntimeAndroid Runtime
Linux KernelLinux Kernel

👉层没少,只是画法不同。


七、最容易混的一个点:Hardware 算不算一层?

不算。

原因很简单:

  • 硬件本身不跑代码
  • 没有调度、内存管理、IPC 能力

👉最底层、也是唯一真正的“系统底座”,一定是 Linux Kernel。

Hardware 只是被 Kernel 管理的对象。


八、一句话总结(可直接背)

4 层 Android 架构图,是早期实现视角的产物;
5 层 Android 架构,是现代系统工程视角的必然结果;
HAL 是否单独成层,取决于时代,而不是对错。

如果你现在在学 Framework、Binder、Treble、系统架构——

👉请坚定使用 5 层结构。


写在最后

当你开始纠结:

  • 分层是否合理
  • 抽象边界在哪里
  • 哪一层才是真正的系统层

说明你已经从“会用 Android”,走向了:

“理解 Android 为什么这么设计”。

这是系统工程师真正的起点。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/20 15:10:06

ubuntu通过windows主机访问网络

背景:校园网限制用户连接数量 方法:用usb网卡。用一台windows主机连接校园网登录,插usb网卡连网线到ubuntu机器;ubuntu机器不需要什么额外配置,windows更改网络适配器设置,把 校园网连接->属性->共享…

作者头像 李华
网站建设 2026/5/30 19:20:27

Doris与Flink整合实战:构建流批一体的大数据处理平台

Doris与Flink整合实战:构建流批一体的大数据处理平台 关键词:Doris、Flink、流批一体、大数据处理平台、实时计算 摘要:本文聚焦于Doris与Flink的整合,旨在构建流批一体的大数据处理平台。详细介绍了Doris和Flink的核心概念及两者…

作者头像 李华
网站建设 2026/5/31 4:42:24

【C标准库】一文吃透 C 语言 assert 断言

文章目录一、assert 是什么?二、基本语法和使用步骤2.1 核心语法2.2 最简单的示例三、assert 的工作机制3.1 如何定义 NDEBUG(关闭断言)?四、assert 的适用场景五、assert 的使用禁忌禁忌1:断言中包含有副作用的表达式…

作者头像 李华
网站建设 2026/6/7 1:38:00

社会网络仿真软件:NetLogo_(17).NetLogo教学与研究资源

NetLogo教学与研究资源 在社会网络仿真的研究和教学中,NetLogo 提供了丰富的资源和工具,帮助用户更好地理解和应用这一强大的仿真平台。本节将详细介绍 NetLogo 的教学与研究资源,包括官方文档、示例模型、在线教程、社区支持以及第三方资源等…

作者头像 李华