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 接口跨硬件粘合。
企业数字化 ERP 产品动态
相关推荐
STM32C542输入捕获频率测量:从原理到误差优化的完整指南 在实际嵌入式开发中,频率测量是一个常见需求,无论是用于检测传感器输出、通信信号分析还是电机转速监控,都需要准确捕获外部信号的周期或频率。STM32系列微控制器内置的高级定时器,配合输入捕获功能,可以高效地完成这一… · 2026/10/3 17:55:47
10分钟上手MultiScrollDemo:打造惊艳下拉视差效果的完整教程 10分钟上手MultiScrollDemo:打造惊艳下拉视差效果的完整教程 【免费下载链接】MultiScrollDemo NestedScrollViewViewPagerRecyclerViewSmartRefreshLayout 打造酷炫下拉视差效果并解决各种滑动冲突 项目地址: https://gitcode.com/gh_mirrors/mu/MultiScrollDemo… · 2026/11/2 0:06:51
如何使用Aibeat进行场景驱动安全评测?新手入门完整指南 如何使用Aibeat进行场景驱动安全评测?新手入门完整指南 【免费下载链接】aibeat Break your AI before they do. 项目地址: https://gitcode.com/gh_mirrors/pr/aibeat
Aibeat(GitHub加速计划/pr/aibeat)是面向真实AI Agent的场景驱动… · 2026/10/7 20:20:20
电工证复审到多少岁官方回应来了 工地太忙根本没时间复习考试 电工证复审到多少岁官方回应来了 工地太忙根本没时间复习考试 工地太忙根本没时间复习考试,这几乎是每个特种作业人员的真实写照。特别是像电工证这样的证件,不仅关系到能否上岗,还直接牵扯到复审年限和年龄限制。最近不少人在问:“… · 2026/11/16 4:18:12
3级电工证考试难度官方回应:工地太忙怎么高效应对? 3级电工证考试难度官方回应:工地太忙怎么高效应对? 工地太忙根本没时间复习考试,这话说得实在,很多一线电工师傅都深有体会。尤其是像我们新乡的劳务班组负责人,手上活儿紧,项目赶进度,抽空复习电工证考试题简直是奢望。不过,别急, 官方回应… · 2026/11/16 4:18:12
买来的特种作业操作证官方回应:工地太忙根本没时间复习考试怎么办 买来的特种作业操作证官方回应:工地太忙根本没时间复习考试怎么办 工地太忙根本没时间复习考试,这话是真真切切在说很多一线特种作业人员的心声。尤其是在郑州金水区,房建工程如火如荼,特种作业人员的需求量大,但时间却比谁都紧张。可偏偏特种作业操作证… · 2026/11/16 4:18:12
特种工查不到信息怎么办?保姆级教程帮你避开报名陷阱 特种工查不到信息怎么办?保姆级教程帮你避开报名陷阱 你是不是也遇到过这种情况:想考个特种作业证,一查信息就找不到,不知道去哪里报名,怕被中介骗钱,搞不好还白费时间?别急,这篇保姆级教程就是为你量身定制的,从报名到考试,再到薪资和职业发展,全… · 2026/11/16 4:18:12
电工证过期了不知道怎么复审延期?考电工证要学历证明官方报名入口全攻略 电工证过期了不知道怎么复审延期?考电工证要学历证明官方报名入口全攻略 证书过期了不知道怎么复审延期?别急,我之前也遇到过这个问题,差点影响了项目进度。今天我就从一个三门峡应届工程类毕业生的角度,给你讲讲【考电工证要学历证明】的那些事,还有【… · 2026/11/16 4:17:12
长春初级电工证怎么考?通过率揭秘全在这里 长春初级电工证怎么考?通过率揭秘全在这里 之前考的证在外省能不能转过来?这几乎是每个想从事电工工作的人都会问的问题。特别是那些在外地打拼多年、手里握着一张“外地电工证”的人,到了长春想继续干这一行,第一反应就是“我的证能用吗?”。今天我们就… · 2026/11/16 3:21:55
国内电工证报考条件与考试时间 低压电工证怎么考?学历不高也能报名,官方报名入口全在这 你是不是经常听说“电工证是入行门槛”,但又担心自己学历不够、经验不足,根本报不了名?别急,今天就带你从零了解【国内电工证】的报考流程、考试内容,还有怎么在 官方报名入口… · 2026/11/16 3:01:18
电工作业时如何断电?电子证书到底能不能全国通用? 电工作业时如何断电?电子证书到底能不能全国通用? 实操考试心里没底怕挂科,特别是电工作业时如何断电这一操作,不仅关系到你能不能拿到证书,更关系到以后能不能顺利上岗。很多人觉得这不过就是“断个电”,但其实这里面的门道可不少,稍有不慎就可能出错… · 2026/11/15 0:00:50
电工证培训的通知在哪考?别再被中介骗了 电工证培训的通知在哪考?别再被中介骗了 你是不是还在为 电工证培训的通知在哪考 发愁?网上搜了一堆信息,结果要么是挂羊头卖狗肉的培训机构,要么就是打着“包过”旗号的骗子?别急,今天我来给你讲讲, 电工证培训的通知… · 2026/11/16 0:00:34
电工证去哪个部门考核值不值得考 信阳转岗人真实经历分享 电工证去哪个部门考核值不值得考 信阳转岗人真实经历分享 怕考不过白交培训费?你不是一个人,信阳的李师傅去年刚转岗做电工,就因为没搞清楚电工证去哪个部门考核,差点交了8000块的培训费。别急,下面这份实操考试全攻略,告诉你电工证到底值不值得考… · 2026/11/16 0:00:34
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 1:51:20
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 4:02:19
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 3:02:05