Android随笔-平台架构

发布时间:2026/9/17 2:38:43
Android随笔-平台架构 Android 系统架构采用分层设计从上到下大致分为五层。一、总体架构图┌─────────────────────────────────────────────────────────────┐ │ 第 5 层应用层 (Applications) │ │ System UI、Launcher、Settings、微信、抖音... │ │ Java/Kotlin 代码SDK API │ ├─────────────────────────────────────────────────────────────┤ │ 第 4 层应用框架层 (Application Framework) │ │ ActivityManagerService、WindowManagerService、 │ │ PackageManagerService、ContentProvider、ResourceManager... │ │ Java 代码system_server 进程 │ ├─────────────────────────────────────────────────────────────┤ │ 第 3 层系统运行库层 (Native Libraries Android Runtime) │ │ SurfaceFlinger、OpenGL ES、SQLite、WebView、Media Codec、 │ │ ART 虚拟机、libc、Binder IPC 库... │ │ C/C 代码.so 共享库 │ ├─────────────────────────────────────────────────────────────┤ │ 第 2 层硬件抽象层 (HAL - Hardware Abstraction Layer) │ │ Camera HAL、Audio HAL、Sensors HAL、GPS HAL、Wi-Fi HAL... │ │ C/C 接口由厂商实现 │ ├─────────────────────────────────────────────────────────────┤ │ 第 1 层Linux 内核层 (Linux Kernel) │ │ 进程调度、内存管理、网络协议栈、电源管理、 │ │ Binder 驱动、显示驱动、输入子系统、Camera 驱动... │ │ C 代码内核态 │ └─────────────────────────────────────────────────────────────┘二、逐层详解第 1 层Linux 内核层这是 Android 的地基负责硬件资源管理和进程隔离。模块说明进程管理调度 CPU 时间片管理进程生命周期fork、kill、信号内存管理虚拟内存、OOM 机制、Ashmem匿名共享内存Binder 驱动你之前问的 Binder IPC 机制的核心。内核态的 Binder 驱动负责跨进程通信的数据拷贝和线程调度显示驱动Framebuffer、DRM/KMS最终把图像数据送到屏幕输入子系统管理触摸屏、按键的底层事件/dev/input/event*网络协议栈TCP/IP、Wi-Fi 驱动、蓝牙协议栈关联知识Zygote 进程通过 fork() 系统调用内核提供孵化应用进程Binder 驱动是 Framework 层所有 IPC 的根基。第 2 层硬件抽象层HALAndroid 不想把硬件访问代码直接塞进内核避免 GPL 传染、方便厂商闭源所以在内核之上加了一层标准化接口。应用 → Framework → HAL 接口定义AIDL/HIDL→ 厂商 HAL 实现 → 内核驱动 → 硬件类型说明Legacy HAL早期以共享库.so形式存在由 Framework 直接 dlopenHIDL HALAndroid 8.0 引入通过 Binder IPC 调用支持独立更新AIDL HALAndroid 11 起逐步替代 HIDL统一用 AIDL例子Camera 拍照流程Camera App → CameraManager (Framework) → CameraService (Native) → Camera HAL (厂商实现如 Qualcomm CAMX) → Camera 驱动 → 硬件传感器第 3 层系统运行库层这一层是 Native 世界包含两部分A. Android RuntimeART特性说明AOT 编译安装时把字节码编译成机器码.oat/.vdex运行时直接执行GC并发标记清除Concurrent Copying GC减少卡顿JIT 回退Android 7 混合模式热代码 JIT 编译冷代码 AOTProfile-S Guided根据用户使用习惯优化编译Kotlin/Java 代码最终在这里被 ART 翻译成 CPU 指令。B. Native Libraries库用途SurfaceFlinger你之前问过的负责合成所有 Layer 的图像送显OpenGL ES / Vulkan图形渲染Skia、HWUI 都依赖它WebView / Chromium网页渲染引擎MediaCodec音视频硬解码通过 OMX/Codec2 调用 HALSQLite本地数据库Binder IPC 库(libbinder)Framework 的Binder.java底层就是调这个第 4 层应用框架层Application FrameworkSystemServer 所在的位置。服务/组件职责对应进程ActivityManagerService (AMS)管理 Activity 生命周期、进程调度、任务栈system_serverWindowManagerService (WMS)管理窗口层级、Surface 分配、输入事件分发system_serverPackageManagerService (PMS)APK 安装/卸载/权限管理、组件解析system_serverContentProvider跨进程数据共享各应用进程 / system_serverView System / ResourceManagerUI 测量布局绘制、资源加载应用进程NotificationManager通知栏管理system_serverLocationManagerGPS/网络定位system_server关键机制SystemServer 启动后在这里注册各种 Service。应用通过 Context.getSystemService() 获取 Binder Proxy与 system_server 里的 Binder Stub 通信。Activity 启动流程就是应用进程↔ AMS ↔ WMS 在这一层的协作。第 5 层应用层最上层直接面向用户。类型例子系统应用Phone、Contacts、Settings、Launcher、SystemUI第三方应用微信、抖音、你的 App每个应用运行在独立的沙箱进程中拥有独立的 UID 和虚拟机实例。应用之间默认不能互相访问内存必须通过 Framework 提供的 IPC 机制通信。三、层与层之间如何通信1. 应用层 ↔ Framework 层// 你写的代码valamgetSystemService(Context.ACTIVITY_SERVICE)asActivityManager底层通过 Binder IPC 调用 system_server 里的 AMS。2. Framework 层 ↔ Native 层Framework 的 Java 代码通过 JNIJava Native Interface 调用 C/C 库。// Surface.javaprivatenativelongnativeCreateFromSurfaceTexture(...);3. Native 层 ↔ HAL 层通过 HIDL/AIDL 接口 或直接的函数调用Legacy HAL。4. HAL 层 ↔ 内核层标准的 Linux 系统调用、ioctl、读写设备节点/dev/xxx。四、AOSP 源码目录对应层级AOSP 路径应用层packages/apps/Frameworkframeworks/base/AMS、WMS、PMS 在这里Native 库frameworks/native/SurfaceFlinger、InputHALhardware/interfaces/HIDL/AIDL 定义内核kernel/或common/Binder 驱动、各子系统ARTart/Bionic libcbionic/五、总结内核层管硬件和进程HAL 层隔离厂商实现Native 层做图形/媒体/虚拟机Framework 层管应用生命周期和系统服务应用层写业务逻辑。层与层之间靠 Binder IPC跨进程、JNI跨语言、HAL 接口跨硬件粘合。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询