0%

安卓端系统架构

linux内核 硬件抽象层 binder ipc android runtime(ART) fragment activity/fragment app

你列的这一串:

Linux内核 → 硬件抽象层 → Binder IPC → ART → Fragment → Activity → App

本质是在问:

👉 Android 整个系统从硬件到 UI 的分层关系到底是怎样的?

我给你按“真实架构顺序”捋清楚一遍,而且结合你现在做的安卓 + 嵌入式项目讲。

一、正确的 Android 分层结构(从下往上)

真正标准结构是:

硬件

Linux Kernel

HAL(硬件抽象层)

Native Framework / System Services

Binder IPC

Android Runtime (ART)

Application Framework

Activity / Fragment

App

我们一层一层讲。

1️⃣ Linux Kernel(内核层)

Android 底层就是 Linux。

负责:

进程管理

内存管理

调度

驱动

Binder 驱动

比如:

摄像头驱动

I2C / SPI

显示驱动

PWM 驱动

Linux 内核是整个系统的“权限中心”。

2️⃣ HAL(Hardware Abstraction Layer)

HAL 作用是:

把“驱动接口”包装成统一接口给 Android Framework 用。

例如:

Camera HAL

Audio HAL

Sensor HAL

比如摄像头:

驱动接口是内核 C 代码
HAL 把它封装成标准接口

Framework 调用 HAL
HAL 再调驱动

HAL 是 C/C++ 写的。

3️⃣ Binder IPC(进程间通信核心)

Android 有大量进程:

system_server

media_server

surfaceflinger

你的 App 进程

它们之间靠什么通信?

👉 Binder

Binder 是:

Linux 内核驱动 + 用户态库

当你调用:

CameraManager.openCamera()

其实通过 Binder 访问的是:

CameraService(在 system_server 里)

Binder 是 Android 架构的“血管系统”。

4️⃣ Android Runtime (ART)

这里是关键。

ART 是:

Java/Kotlin 代码的运行环境

比如:

垃圾回收

类加载

字节码执行

JIT / AOT

以前是 Dalvik
现在是 ART

代表系统:

Android Runtime

ART 运行在:

Linux 用户空间

5️⃣ Application Framework

这里是:

ActivityManager

WindowManager

PackageManager

LocationManager

CameraManager

都是 Java 层服务。

你写的代码大部分用的就是这一层。

6️⃣ Activity / Fragment

这属于:

应用框架层的 UI 组件

例如:

Activity

Fragment

它们本质只是:

Framework 提供的 UI 管理类

7️⃣ App(你写的代码)

你写的:

MVVM

ViewModel

RxJava

MQTT

地图

视频解码

都运行在:

ART 之上
用户空间
独立进程

二、现在我们串起来

比如你点击按钮:

button.setOnClickListener { openCamera() }

完整路径是:

App

Activity

Framework(CameraManager)

Binder IPC

system_server

CameraService

HAL

Linux 驱动

摄像头硬件

三、关键理解
1️⃣ Binder 在哪里?

Binder 位于:

Linux Kernel + 用户空间之间

它是跨进程桥梁。

2️⃣ ART 在哪里?

ART 在:

Linux 用户空间

它不接触硬件。

3️⃣ HAL 在哪里?

HAL 在:

用户空间(native 层)

但它调用:

内核驱动

四、用你无人机项目类比一下

你现在:

Android 做 UI

MQTT

地图

视频解码

这些都在:

App → ART → Framework

真正飞控板:

MCU

RTOS

PWM

IMU

在完全不同系统。

五、你这串的正确顺序应该是:

从下到上:

硬件
Linux Kernel
Binder 驱动
HAL
System Services
Android Runtime (ART)
Application Framework
Activity / Fragment
App
六、一句话理解每层
层 作用
Linux Kernel 控制硬件
HAL 统一驱动接口
Binder 进程间通信
ART 运行 Java 代码
Framework 提供系统服务
Activity UI 管理
App 业务逻辑
七、最重要的一句话

Android App 从来没有碰到过硬件
它只是通过一层一层代理访问

这也是为什么:

👉 你做无人机控制时
Android 只是“上位机”

真正控制硬件的是:

MCU

RTOS

Linux 驱动