Android 架构
Refer https://source.android.com/docs/core/architecture?hl=zh-cn
代码框架整理
Linux Kernel 层
大类 | 子模块 | 主要功能 | 代码路径 |
---|---|---|---|
GKI 与厂商驱动 | GKI 核心 | 通用内核,简化配置,支撑主线生态 | kernel/ |
GKI 与厂商驱动 | Vendor 驱动 | 厂商专用硬件驱动,模块化加载 | vendor/ 、 hardware/ |
GKI 与厂商驱动 | KGSL | 高通 Adreno GPU 驱动,管理 GPU 资源/功耗/命令 | drivers/gpu/msm/kgsl/ |
Android专有模块 | Binder | 主 IPC 机制,进程间对象/RPC通信 | drivers/android/binder/ |
Android专有模块 | Ashmem | 匿名共享内存(高效进程间共享) | drivers/staging/android/ashmem.c |
Android专有模块 | Lowmemorykiller | 低内存回收(LMK,内核/用户空间) | drivers/staging/android/lowmemorykiller.c / system/memory/lmkd/ |
Android专有模块 | IOCTL 框架 | 标准 I/O 控制接口 | drivers/ |
Android专有模块 | 电源管理 | CPU 频率调节、wakelock、休眠唤醒 | drivers/cpufreq/ , kernel/power/ |
Android专有模块 | SELinux | 强制访问控制,保障系统安全 | security/selinux/ |
Android专有模块 | Vendor Modules | 各类厂商专用硬件驱动 | vendor/ 、 hardware/ |
Android专有模块 | RIL | 无线通信接口 | system/rild/ |
内存管理 | LMK | 低内存回收机制(内核/用户空间) | drivers/staging/android/lowmemorykiller.c / system/memory/lmkd/ |
内存管理 | ZRAM | 压缩内存,提升低端设备内存利用 | drivers/staging/zram/ |
内存管理 | Buddy System | 物理内存分配与合并 | mm/compaction.c |
内存管理 | Slab/SLUB 分配器 | 内核对象缓存池式分配 | mm/slab.c , mm/slub.c |
内存管理 | ION | 多媒体/SoC物理内存分配与共享 | drivers/staging/android/ion/ |
内存管理 | DMA-BUF | 跨驱动共享物理内存标准接口 | drivers/dma-buf/ |
文件系统与存储 | EXT4 | 默认文件系统,高性能高可靠 | fs/ext4/ |
文件系统与存储 | F2FS | 针对 Flash 优化的文件系统 | fs/f2fs/ |
文件系统与存储 | 加密文件系统 | FSCRYPT/LUKS 文件系统加密 | fs/crypto/ |
文件系统与存储 | Vold | 存储管理守护进程,挂载/卸载/OTG管理 | system/core/vold/ |
文件系统与存储 | DM-Verity | 只读分区完整性校验,防篡改 | drivers/md/ |
文件系统与存储 | Keymaster HAL | 密钥管理/安全生成功能 | hardware/interfaces/security/keymint/aidl/ |
网络 | TCP/IP 协议栈 | IPv4/IPv6/TCP/UDP 网络通信 | net/ipv4/ , net/ipv6/ |
网络 | Wi-Fi 驱动 | 无线网卡、Wi-Fi 管理 | drivers/net/wireless/ |
网络 | 蓝牙驱动 | 蓝牙协议栈驱动 | drivers/bluetooth/ |
网络 | Netfilter | 防火墙/NAT/数据包过滤 | net/netfilter/ |
安全性 | SELinux | 强制访问控制 | security/selinux/ |
安全性 | HSM | 硬件安全模块,加密运算加速 | drivers/crypto/ |
安全性 | AppArmor(可选) | 可选安全沙箱策略 | security/apparmor/ |
中断/硬件管理 | 中断管理 | 硬件/软件中断分发和处理 | kernel/irq/ |
中断/硬件管理 | GPU 驱动 | Adreno/Mali 等 GPU 内核驱动 | drivers/gpu/ , drivers/gpu/msm/kgsl/ |
中断/硬件管理 | 传感器驱动 | 各类传感器(加速度计、陀螺仪等) | drivers/iio/ |
中断/硬件管理 | 输入设备驱动 | 触摸屏、键盘等输入设备 | drivers/input/ |
Native Libraries 层
类别 | 名称 | 主要功能 | 代码路径 |
---|---|---|---|
基础库 | Bionic libc | C 标准库,系统调用、内存分配 | bionic/ |
基础库 | libc++ | C++ 标准库 | external/libcxx/ |
基础库 | libm | 数学函数库 | bionic/libm/ |
系统基础 | liblog | 日志接口 | system/core/liblog/ |
系统基础 | libbinder | Binder IPC 支持 | frameworks/native/libs/binder/ |
系统基础 | libutils | 字符串、Mutex、引用计数等工具 | system/core/libutils/ |
系统基础 | libandroid | Native 和 Java 桥接接口 | frameworks/native/libs/android/ |
系统基础 | libnativehelper | JNI 辅助库 | frameworks/native/libs/nativehelper/ |
安全 | libselinux | SELinux 支持库 | external/selinux/libselinux/ |
安全 | libcrypto | 加密算法库 | external/openssl/ |
安全 | libssl | SSL/TLS 支持 | external/openssl/ |
算法/压缩 | libz | 压缩算法库(zlib) | external/zlib/ |
多媒体 | libjpeg | JPEG 图像解码 | external/libjpeg-turbo/ |
多媒体 | libpng | PNG 图像解码 | external/libpng/ |
多媒体 | libwebp | WebP 图像处理 | external/libwebp/ |
多媒体 | libskia | 2D 图形渲染 | external/skia/ |
图形 | libEGL/libGLES | OpenGL ES 支持 | frameworks/native/opengl/ |
图形 | libvulkan | Vulkan 支持 | external/vulkan/ |
摄像头 | libcamera | 摄像头 HAL 通用库 | external/libcamera/ |
输入 | libinput | 输入设备支持 | system/core/libinput/ |
多媒体 | libstagefright | 多媒体编解码 | frameworks/av/media/libstagefright/ |
多媒体 | libmediandk | 多媒体原生接口 | frameworks/av/media/ndk/ |
序列化 | libprotobuf | Protocol Buffers 序列化库 | external/protobuf/ |
ART | libdexfile | DEX 字节码解析与支持 | art/libdexfile/ |
ART | libart | ART 虚拟机核心库 | art/runtime/ |
Native Deamons 层
类别 | 名称 | 主要功能 | 代码路径 |
---|---|---|---|
启动/管理 | init | 系统启动初始化,启动守护进程 | system/core/init/ |
调试 | adbd | ADB 调试守护进程 | system/core/adb/ |
存储 | vold | 存储设备管理(挂载、加密、OTG等) | system/vold/ |
网络 | netd | 网络配置、DNS、防火墙等 | system/netd/ |
日志 | logd | 系统日志服务 | system/core/logd/ |
管理 | servicemanager | Binder 服务管理器 | frameworks/native/cmds/servicemanager/ |
应用孵化 | zygote | 应用进程孵化器,启动 Java 应用 | frameworks/base/cmds/zygote/ |
图形 | surfaceflinger | 图形合成服务,负责屏幕显示 | frameworks/native/services/surfaceflinger/ |
内存 | lmkd | Low Memory Killer Daemon 内存回收守护进程 | system/memory/lmkd/ |
无线 | rild | 无线通信守护进程(Radio Interface Layer) | hardware/ril/ |
电池 | healthd | 电池和健康状态监控 | system/core/healthd/ |
安全 | keystore | 密钥/证书安全管理 | system/security/keystore/ |
安装 | installd | APK 安装、数据目录管理 | system/extras/installd/ |
DRM | drmserver | 数字版权管理(DRM)服务 | frameworks/av/drm/drmserver/ |
安全 | gatekeeperd | 屏幕解锁验证(Gatekeeper HAL) | system/gatekeeperd/ |
统计 | statsd | 统计与遥测收集服务 | frameworks/base/cmds/statsd/ |
HAL(Harware Abstraction Layer) 层
模块 | 功能描述 | 代码路径 |
---|---|---|
audio | 音频采集、播放、处理和音频硬件控制 | hardware/interfaces/audio/aidl/ |
camera | 摄像头操作、采集、拍照、视频录制、参数调节 | hardware/interfaces/camera/aidl/ |
graphics | 显示合成(HWC)、图形 buffer 分配、显示刷新 | hardware/interfaces/graphics/composer/aidl/ hardware/interfaces/graphics/allocator/aidl/ |
light | 屏幕、键盘、通知 LED 灯光控制 | hardware/interfaces/light/aidl/ |
vibrator | 振动器控制(马达驱动、震感反馈) | hardware/interfaces/vibrator/aidl/ |
sensors | 各类传感器(加速度、陀螺仪、磁力、环境、计步等) | hardware/interfaces/sensors/aidl/ |
biometrics | 指纹、人脸、虹膜等生物识别接口 | hardware/interfaces/biometrics/fingerprint/aidl/ hardware/interfaces/biometrics/face/aidl/ |
bluetooth | 蓝牙功能(扫描、配对、音频、BLE等) | hardware/interfaces/bluetooth/aidl/ |
wifi | 无线网络(Wi-Fi)配置、扫描、连接、热点 | hardware/interfaces/wifi/aidl/ |
gnss | 卫星定位(GPS、GLONASS、北斗、Galileo) | hardware/interfaces/gnss/aidl/ |
radio | 无线通信(蜂窝基带,电话、短信、数据、SIM等) | hardware/interfaces/radio/aidl/ |
nfc | 近场通信(NFC) | hardware/interfaces/nfc/aidl/ |
usb | USB 设备检测、模式切换、充电控制 | hardware/interfaces/usb/aidl/ |
thermal | 芯片、CPU/GPU/电池等温度采集与管理 | hardware/interfaces/thermal/aidl/ |
health | 电池健康、电量、温度、电池状态采集与上报 | hardware/interfaces/health/aidl/ |
power | 电源管理(省电模式、唤醒、休眠、boost等) | hardware/interfaces/power/aidl/ |
keymaster | 密钥/加密硬件支持(安全密钥生成、签名、硬件安全区) | hardware/interfaces/security/keymint/aidl/ |
gatekeeper | 锁屏密码/生物识别 gatekeeper 认证支持 | hardware/interfaces/gatekeeper/aidl/ |
drm | 数字版权管理(DRM),密钥协商、内容保护 | hardware/interfaces/drm/aidl/ |
automotive | 车载信息娱乐、CAN 总线、仪表盘等车辆相关控制 | hardware/interfaces/automotive/ |
graphics_mapper | GraphicBuffer Mapper,图形内存映射接口 | hardware/interfaces/graphics/mapper/aidl/ |
media | 多媒体硬件加速(视频编解码、音频处理、Camera ISP) | hardware/interfaces/media/aidl/ |
configstore | 配置信息存取,提供 SoC/HW 相关参数 | hardware/interfaces/configstore/aidl/ |
display | 显示输出(Display HAL,屏幕参数、亮度、刷新率等) | hardware/interfaces/display/aidl/ |
input | 输入设备(键盘、触控板、手写笔等)管理和事件采集 | hardware/interfaces/input/aidl/ |
boot | 设备启动、bootloader 状态、分区切换 | hardware/interfaces/boot/aidl/ |
fastboot | fastboot 模式和接口实现 | hardware/interfaces/fastboot/aidl/ |
time | 时间管理、RTC、系统时间设置 | hardware/interfaces/time/aidl/ |
secure_element | SE(安全芯片,NFC/支付/安全存储等)接口 | hardware/interfaces/secure_element/aidl/ |
identity | 身份认证、证件接口(如 eID、国密、护照等) | hardware/interfaces/identity/aidl/ |
oemlock | OEM 锁控制(设备解锁、bootloader 锁等) | hardware/interfaces/oemlock/aidl/ |
wifi_offload | Wi-Fi 卸载、低功耗扫描等 | hardware/interfaces/wifi/offload/aidl/ |
confirmationui | 安全确认 UI 支持 | hardware/interfaces/confirmationui/aidl/ |
soundtrigger | 声音唤醒(如“OK Google”热词检测) | hardware/interfaces/soundtrigger/aidl/ |
TV HAL 层
模块 | 功能描述 | 代码路径 |
---|---|---|
tv_input | 电视输入源(HDMI、ATV、DTV、AV、Component 等)管理 | hardware/interfaces/tv/input/aidl/ |
tv_cec | HDMI CEC (Consumer Electronics Control) 控制和事件 | hardware/interfaces/tv/cec/aidl/ |
tv_tuner | 电视调谐器(DVB/ATSC/ISDB)支持,频道扫描、播放 | hardware/interfaces/tv/tuner/aidl/ |
tv_audio | 电视音频输入、解码、音效处理 | hardware/interfaces/tv/audio/aidl/ |
tv_hdmi | HDMI 输入检测与管理,EDID、热插拔、模式切换 | hardware/interfaces/tv/hdmi/aidl/ |
tv_smartcard | 电视智能卡(CA 解密、授权、付费电视等)接口 | hardware/interfaces/tv/smartcard/aidl/ |
tv_ci | 条件接收(CAM 卡、Conditional Access)管理 | hardware/interfaces/tv/ci/aidl/ |
tv_wakeup | TV 唤醒(遥控器、HDMI CEC 唤醒、定时唤醒等) | hardware/interfaces/tv/wakeup/aidl/ |
tv_input_control | 电视输入切换、信号状态管理 | hardware/interfaces/tv/inputcontrol/aidl/ |
tv_antenna | 天线、信号强度、信号质量检测与控制 | hardware/interfaces/tv/antenna/aidl/ |
tv_overlay | TV 画中画(PIP)、OSD、图层叠加控制 | hardware/interfaces/tv/overlay/aidl/ |
tv_dvr | 数字录像(DVR,录制电视节目、回放) | hardware/interfaces/tv/dvr/aidl/ |
tv_hbbtv | HbbTV(混合广播宽带电视标准)应用与数据接口 | hardware/interfaces/tv/hbbtv/aidl/ |
tv_boot | TV 专用开机流程、待机与恢复控制 | hardware/interfaces/tv/boot/aidl/ |
tv_remote | 电视遥控器(红外/Bluetooth/语音)事件采集和管理 | hardware/interfaces/tv/remote/aidl/ |
tv_hdmi_arc | HDMI ARC(音频回传通道)/eARC 支持 | hardware/interfaces/tv/hdmi_arc/aidl/ |
ART(Android Runtime) 层
模块 | 功能描述 | 代码路径 |
---|---|---|
runtime | ART 虚拟机主运行时环境,负责类加载、内存管理、线程调度、异常处理、GC、JIT/AOT 执行 | art/runtime/ |
dex2oat | DEX 到 OAT(本地代码)的 AOT 编译工具 | art/dex2oat/ |
odrefresh | OAT/DEX 优化与刷新的守护与工具,增量重编译与文件一致性检测 | art/odrefresh/ |
oatdump | OAT 文件结构、内容及本地代码分析与调试工具 | art/oatdump/ |
dalvikvm | Dalvik 兼容入口(历史兼容层,实际调用 ART runtime) | art/dalvikvm/ |
libart | ART VM 核心运行时库与平台适配 | art/libartbase/ art/libartpalette/ |
libdexfile | DEX 字节码格式解析、操作与校验 | art/libdexfile/ |
libart-compiler | ART 编译器核心,字节码到本地代码转换、优化 | art/compiler/ |
libart-disassembler | 字节码与本地指令反汇编分析 | art/disassembler/ |
libartbase | ART 基础工具、数据结构、日志、调试支持 | art/libartbase/ |
libartpalette | 平台适配接口,跨架构/OS 抽象层 | art/libartpalette/ |
gc | 垃圾回收(GC)模块,内存回收算法与调优 | art/runtime/gc/ |
jit | 即时编译(JIT),运行时热点代码本地化与优化 | art/runtime/jit/ |
interpreter | 字节码解释器,DEX 指令动态调度执行 | art/runtime/interpreter/ |
imgdiag | Image 文件分析工具(system image 校验与分析) | art/imgdiag/ |
profile | 方法/代码块热度分析、profile 数据收集与利用 | art/profile/ |
quick | 快速方法调用和内联、调用链优化等 | art/runtime/quick/ |
signal_catcher | 信号捕捉与故障转储(crash、ANR、native 信号管理) | art/runtime/signal_catcher.cc |
monitor | 对象锁、同步、Monitor 机制实现 | art/runtime/monitor.cc |
verifier | DEX 字节码静态校验与安全验证 | art/runtime/verifier/ |
debugger | Java 调试接口 JDWP/断点/单步执行等 | art/runtime/debugger/ |
trace | 方法调用/性能追踪与分析支持 | art/runtime/trace/ |
hidden_api | 隐藏 API 管控,防止 App 访问系统私有接口 | art/runtime/hidden_api/ |
hprof | Java 堆内存快照与分析工具(heap profiler) | art/runtime/hprof/ |
jdwp | Java 调试线协议实现(JDWP) | art/runtime/jdwp/ |
libcore | Java 标准库与通用 API 实现(集合、IO、网络、XML、加密、ICU 等),为 ART/Java Framework 提供核心类库支持 | libcore/ |
OAT(.oat 文件) | ART 将 DEX 字节码 AOT 编译后的产物,包含本地机器码和元数据,提升启动和执行效率 | art/dex2oat/ art/runtime/oat_file.h art/oatdump/ art/odrefresh/ |
JNI | Java 层与 native(C/C++)代码互操作桥梁,实现方法调用、数据转换、线程/对象管理 | art/runtime/jni/ libcore/ojluni/src/main/native/include/jni.h |
libnativebridge | Native Bridge 机制实现,不同架构下 native so 的兼容仿真加载,跨 ABI 支持 | art/libnativebridge/ |
libnativeloader | 动态库加载与命名空间隔离机制,管理 so 加载路径、安全隔离与卸载 | art/libnativeloader/ |
Android Framework层
模块 | 功能描述 | 主要代码路径 |
---|---|---|
ActivityManager | 应用组件生命周期管理、进程调度、任务栈管理、后台管控 | frameworks/base/services/core/java/com/android/server/am/ |
PackageManager | APK 安装/卸载、包管理、权限管理、签名校验、分区 | frameworks/base/services/core/java/com/android/server/pm/ |
WindowManager | 窗口/层级管理、窗口动画、输入分发、屏幕适配 | frameworks/base/services/core/java/com/android/server/wm/ |
InputManager | 输入事件收集、分发、输入设备(键盘、触控、鼠标、遥控)管理 | frameworks/base/services/core/java/com/android/server/input/ frameworks/base/core/java/android/hardware/input/ |
DisplayManager | 屏幕显示设备管理、投屏、分辨率切换、亮度控制 | frameworks/base/services/core/java/com/android/server/display/ |
PowerManager | 电源管理、休眠/唤醒、亮度/省电控制、Wakelock | frameworks/base/services/core/java/com/android/server/power/ |
NotificationManager | 通知管理、消息推送、渠道与权限控制、锁屏与前台通知 | frameworks/base/services/core/java/com/android/server/notification/ frameworks/base/core/java/android/app/NotificationManager.java |
AlarmManager | 定时任务调度、闹钟服务 | frameworks/base/services/core/java/com/android/server/alarm/ |
ResourceManager | 应用与系统资源(布局、图片、字符串、样式、主题)加载与管理 | frameworks/base/core/java/android/content/res/ frameworks/base/libs/androidfw/ frameworks/base/services/core/java/com/android/server/ |
LocationManager | 定位服务、位置更新、地理围栏、GPS/网络定位 | frameworks/base/services/core/java/com/android/server/location/ |
ConnectivityManager | 网络连接、Wi-Fi/蜂窝/以太网、VPN、代理、网络切换 | frameworks/base/services/core/java/com/android/server/connectivity/ |
TelephonyManager | 蜂窝网络、通话、短信、SIM 卡、信号强度 | frameworks/opt/telephony/src/java/com/android/internal/telephony/ |
WifiManager | 无线网络连接、Wi-Fi 扫描、热点、状态监听 | frameworks/opt/net/wifi/service/java/com/android/server/wifi/ |
BluetoothManager | 蓝牙连接、设备配对、BLE、音频控制 | packages/modules/Bluetooth/service/java/com/android/server/bluetooth/ |
AudioManager | 音频策略、音量、输出/输入路由、音效 | frameworks/base/services/core/java/com/android/server/audio/ |
MediaSessionManager | 多媒体播放会话、媒体控制、通知交互 | frameworks/base/services/core/java/com/android/server/media/ |
CameraService | 摄像头设备管理、拍照、预览、视频采集 | frameworks/av/services/camera/libcameraservice/ |
SensorManager | 传感器事件收集、数据融合、传感器策略 | frameworks/base/services/core/java/com/android/server/sensor/ |
JobSchedulerService | 后台任务调度、任务约束、Doze/省电兼容 | frameworks/base/services/core/java/com/android/server/job/ |
SystemUI | 系统界面(状态栏、导航栏、通知栏、快设面板) | frameworks/base/packages/SystemUI/ |
PermissionManager | 权限申请、授权、管理、特殊权限分发 | frameworks/base/services/core/java/com/android/server/pm/permission/ |
ContentProvider | 跨应用数据共享、标准化数据访问接口(数据库、文件、网络等) | frameworks/base/core/java/android/content/ContentProvider.java frameworks/base/core/java/android/content/ |
Views | UI 视图系统,所有控件、布局、动画、事件分发基础 | frameworks/base/core/java/android/view/ frameworks/base/core/java/android/widget/ |
ClipboardService | 剪贴板数据管理、读写、权限控制 | frameworks/base/services/core/java/com/android/server/clipboard/ |
StorageManager | 存储空间管理、分区、OTG 设备、加密、文件系统挂载 | frameworks/base/services/core/java/com/android/server/storage/ |
MountService | 存储挂载、卸载、监听、分区管理 | frameworks/base/services/core/java/com/android/server/mount/ |
UsbService | USB 设备检测、状态管理、MTP/PTP、权限分发 | frameworks/base/services/usb/java/com/android/server/usb/ |
PrintService | 打印设备管理、打印任务、网络打印支持 | frameworks/base/services/core/java/com/android/server/print/ |
DevicePolicyManager | 企业设备管理、策略下发、远程锁定/擦除 | frameworks/base/services/devicepolicy/java/com/android/server/devicepolicy/ |
WallpaperManager | 壁纸管理、壁纸设置、动态壁纸 | frameworks/base/services/core/java/com/android/server/wallpaper/ |
AccessibilityManager | 辅助功能(无障碍)、读屏、放大镜、辅助输入 | frameworks/base/services/core/java/com/android/server/accessibility/ |
BackupManager | 数据备份与恢复、云备份接口 | frameworks/base/services/core/java/com/android/server/backup/ |
RestrictionsManager | 家长控制、内容限制、应用限制 | frameworks/base/services/core/java/com/android/server/restrictions/ |
TrustManager | 信任设备、解锁策略、设备信任级别 | frameworks/base/services/core/java/com/android/server/trust/ |
LockSettingsService | 锁屏设置、密码/指纹/面部识别管理 | frameworks/base/services/core/java/com/android/server/locksettings/ |
AppOpsManager | 应用操作权限控制、敏感操作监控 | frameworks/base/services/core/java/com/android/server/appop/ |
UsageStatsManager | 应用使用统计、前后台检测、屏幕时间、限制策略 | frameworks/base/services/usage/java/com/android/server/usage/ |
ShortcutsManager | 快捷方式管理、动态/固定快捷方式接口 | frameworks/base/services/core/java/com/android/server/shortcuts/ |
IncidentManager | 故障报告、系统诊断、异常事件收集 | frameworks/base/services/core/java/com/android/server/incident/ |
StatsManager | 性能统计、事件分析、系统指标采集 | frameworks/base/services/core/java/com/android/server/stats/ |
PolicyManager | 电源/设备/安全策略统一管理接口 | frameworks/base/services/core/java/com/android/server/policy/ |
MediaService | 多媒体会话管理、音视频路由、媒体资源分配与权限 | frameworks/av/services/mediaresourcemanager/ frameworks/base/services/core/java/com/android/server/media/ |
MediaCodec | 多媒体编解码标准接口,硬件加速编解码适配 | frameworks/base/media/java/android/media/MediaCodec.java frameworks/av/media/libstagefright/ |
MediaExtractor | 多媒体封装格式解析与音视频流提取 | frameworks/base/media/java/android/media/MediaExtractor.java frameworks/av/media/libstagefright/MediaExtractor.cpp |
OpenMAX AL | 多媒体硬件抽象标准接口,底层音视频硬件访问 | frameworks/wilhelm/ frameworks/base/media/jni/ |