04-05-11 《深入理解Android内核设计思想》学习指南

张开发
2026/6/10 1:32:11 15 分钟阅读
04-05-11 《深入理解Android内核设计思想》学习指南
04-05-11 《深入理解Android内核设计思想》学习指南作者林学森主题Android内核、HAL层、驱动开发、系统移植版本v2.0适配 Android 16 / API 36 “Baklava”更新日期2026-04-16书籍概览《深入理解Android内核设计思想》深入剖析Android系统的内核层和硬件抽象层HAL是Android底层开发的必读书籍。核心定位聚焦Linux内核和HAL层与《深入理解Android》卷1-3形成互补Framework → HAL → Kernel适合BSP开发、驱动开发、系统移植工程师Android 16 时代阅读提示本书成书于较早的 Android 版本部分技术栈在 Android 16 中已发生显著变化。阅读时请注意以下演进HAL 层HIDL →AIDL HALAndroid 14 强制要求新设备使用 AIDL内核GKI 2.0通用内核镜像vendor module 以 GKI 兼容方式加载构建系统Make →Soong BazelAndroid 14 逐步迁移到 Bazel显示BLAST-Sync取代传统 VSYNC 同步机制音频传统 Audio HAL →Android Audio HAL (AAH) LE Audio 支持电源Doze →Adaptive Battery / App Standby Buckets eBPF 监控网络WiFi 5/BT 4 →WiFi 6E/7 Bluetooth LE Audio系统分区system/vendor →APEX 模块化 Mainline 更新完整章节目录章节标题核心内容重要性难度文件大小第1章Android系统概述Android架构、HAL作用3/52/59.9K第2章Android源码下载及编译repo、编译系统、mm/mmm4/53/519K第3章Android内核及系统移植BSP开发、设备树、移植5/55/528K第4章Android启动过程详解Bootloader、内核启动5/54/522K第5章Android输入系统EventHub、触摸屏驱动4/54/535K第6章Android显示系统Framebuffer、HWC、LCD5/55/527K第7章Android音频系统ALSA、Audio HAL、ASoC4/55/529K第8章Android传感器系统Sensor HAL、IIO、驱动3/54/531K第9章Android电源管理WakeLock、Suspend/Resume4/54/528K第10章Android通信系统WiFi、Bluetooth、RIL4/55/534K总计10章262KB笔记内容知识体系地图Android 16 技术栈全景从上到下┌─────────────────────────────────────────────────────┐ │ 应用层 (Java/Kotlin) │ │ Activity/Service/View/Compose │ │ ★ Android 16: 前台服务强制通知、后台启动限制增强 │ └─────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────┐ │ Framework层 (Java) 【卷1-3重点】 │ │ AMS/WMS/PMS/SurfaceFlinger/AudioFlinger/等 │ │ ★ Android 16: 预测性返回动画、照片/视频部分访问 │ │ ★ Android 16: 屏幕录制增强检测、健康连接API │ └─────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────┐ │ JNI层 (C) │ │ Java ↔ Native 桥梁 │ └─────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────┐ │ Native Services APEX Modules │ │ ★ APEX 模块化更新Mainline 项目 │ │ ★ MediaProvider、Connectivity、WiFi 等可独立更新 │ └─────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────┐ │ HAL层 (Hardware Abstraction Layer) 【本书重点】 │ │ ├── Input HAL (第5章) → AIDL HAL (Android 14) │ │ ├── Graphics HAL (第6章) → AIDL BLAST-Sync │ │ ├── Audio HAL (第7章) → AAH LE Audio │ │ ├── Sensor HAL (第8章) → AIDL HAL │ │ ├── Power HAL (第9章) → AIDL Adaptive Power │ │ └── WiFi/BT HAL (第10章) → AIDL WiFi 6E/7 │ │ ★ Android 16: 新设备强制使用 AIDL HAL非HIDL │ └─────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────┐ │ Linux 内核 6.12 (GKI 2.0) 【本书重点】 │ │ ├── GKI 统一内核Google 维护通用 kernel │ │ ├── Vendor Module 以 .ko 形式加载GKI 兼容 │ │ ├── 输入子系统 (input subsystem) │ │ ├── 显示子系统 (DRM/KMS) │ │ ├── 音频子系统 (ALSA/ASoC) │ │ ├── 传感器子系统 (IIO) │ │ ├── 电源管理 (PM eBPF 监控) │ │ └── 网络子系统 (cfg80211/HCI WiFi 6E/7) │ │ ★ Android 16: 内核版本 6.12 LTSGKI 2.0 成熟 │ └─────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────┐ │ 硬件层 (Hardware) │ │ CPU/GPU/Display/Audio/Sensor/WiFi 7/BT LE Audio │ └─────────────────────────────────────────────────────┘本书与《深入理解Android》卷1-3的关系《深入理解Android》卷1-3 ↓ Framework层Java/C Services ↓ 《深入理解Android内核设计思想》 ↓ HAL层 Linux内核层 ↓ 硬件设备互补关系卷1-3自上而下应用 → Framework → Binder → Native Services本书自下而上硬件 → 驱动 → HAL → FrameworkAndroid 16 HAL 架构演进重点补充传统 HAL 架构本书原版 Android 16 HAL 架构 ━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━ HIDL (HAL Interface Definition) AIDL (Android Interface Def Lang) ↓ ↓ .hal 文件 .aidl 文件 ↓ ↓ hidl-gen 生成代码 aidl_interface 编译 ↓ ↓ Binder IPC (手动) Binder IPC (AIDL 自动生成) ↓ ↓ vendor 分区 vendor / system_ext 分区 ↓ ↓ 无版本稳定性保证 冻结接口向后兼容保证AIDL HAL 的优势统一接口定义语言Framework 和 HAL 共用 AIDL自动生成 Binder 代码减少手工维护接口版本管理V1, V2, …和冻结机制支持默认方法、 Parcelable 自动序列化学习路径规划路径1快速入门适合初学者1周目标了解Android内核和HAL层的基本架构Day 1-2: 第1-2章 (系统概述 源码编译) ├── 理解Android架构、搭建开发环境 └── ★ Android 16 更新使用 repo init -b android16-qpr1-release └── ★ Android 16 更新构建系统已迁移到 Bazel Soong 混合模式 Day 3-4: 第4章 (启动过程) ├── 理解从Bootloader到SystemServer的完整流程 └── ★ Android 16 更新init 进程支持 APEX 挂载、eBPF 程序加载 Day 5-7: 第5章 (输入系统) ├── 理解触摸屏从硬件到应用的完整路径 └── 实践编写简单的输入驱动 └── ★ Android 16 更新Input HAL 已迁移到 AIDL 接口路径2系统进阶适合有基础开发者3周目标掌握HAL层开发和主要子系统的驱动开发Week 1: 内核基础GKI 2.0 时代 ├── 第2章编译系统Soong Bazel ├── 第3章内核移植GKI 2.0 vendor module ├── 第4章启动过程APEX eBPF └── 实践 - 使用 GKI 2.0 编译通用内核镜像 - 编写 GKI 兼容的 vendor module (.ko) - 构建 APEX 模块并测试 OTA 更新 Week 2: 输入/显示子系统AIDL HAL 时代 ├── 第5章输入系统AIDL Input HAL ├── 第6章显示系统DRM/KMS BLAST-Sync └── 实践 - 使用 AIDL 定义 Input HAL 接口 - 移植触摸屏驱动到 GKI 2.0 框架 - 调试 HWComposer BLAST-Sync 同步 - 适配 LCD 屏幕到 DRM 框架 Week 3: 音频/传感器/电源现代架构 ├── 第7章音频系统AAH LE Audio AIDL ├── 第8章传感器系统AIDL Sensor HAL ├── 第9章电源管理Adaptive Battery eBPF 监控 └── 实践 - 适配音频 Codec 到 AAH 框架 - 使用 AIDL 实现 Sensor HAL - 配置 Adaptive Battery 策略 - 使用 eBPF 跟踪电源事件路径3专题深入适合高级开发者专题A系统移植与BSP开发GKI 2.0 时代2周├── 第2章编译系统深入Bazel 构建规则 ├── 第3章内核移植GKI 2.0 框架 ├── 第4章启动过程调试 └── 实践项目 - 基于 GKI 2.0 通用内核移植 Android 到新硬件 - 编写 GKI 兼容的 vendor module设备专属驱动 - 使用 Bazel 构建 vendor 分区镜像 - 配置 APEX 模块实现子系统独立更新 - 优化启动时间目标 15 秒冷启动专题B多媒体子系统现代显示与音频1周├── 第6章显示系统DRM/KMS、HWC、BLAST-Sync ├── 第7章音频系统ALSA、TinyALSA、AAH、LE Audio └── 实践项目 - 适配 GPU 驱动到 DRM/KMS 框架 - 实现 BLAST-Sync 同步缓冲队列 - 使用 AIDL 实现 Audio HAL (AAH) - 适配 LE AudioLC3 编解码器、Broadcast Audio - 优化音视频播放性能专题C通信子系统WiFi 6E/7 LE Audio1周├── 第10章WiFi (cfg80211/mac80211 WiFi 6E/7) ├── 第10章Bluetooth (HCI LE Audio AIDL) ├── 第10章RIL (Telephony) └── 实践项目 - 移植 WiFi 6E/7 驱动到 GKI 2.0 - 适配蓝牙芯片到 LE Audio 框架 - 使用 AIDL 实现 BT HAL 接口 - 调试网络连接问题专题DAPEX 模块开发Android 16 新增专题1周├── APEX 模块架构与构建apex_builder Bazel ├── Mainline 更新机制Google Play 系统更新 └── 实践项目 - 将 vendor 功能模块打包为 APEX - 配置 APEX 签名和 OTA 推送 - 测试 APEX 回滚机制 - 编写 APEX 模块的兼容性测试快速查找索引按技术主题查找主题相关章节关键技术Android 16 更新系统移植第2、3、4章BSP、设备树、BootloaderGKI 2.0、Bazel 构建输入设备第5章EventHub、触摸屏、按键AIDL Input HAL显示系统第6章Framebuffer、DRM、HWCBLAST-Sync、DRM 独占模式音频系统第7章ALSA、TinyALSA、ASoCAAH、LE Audio、LC3 编解码传感器第8章IIO、加速度计、陀螺仪AIDL Sensor HAL电源管理第9章WakeLock、Suspend/ResumeAdaptive Battery、eBPF网络通信第10章WiFi、Bluetooth、RILWiFi 6E/7、LE Audio模块化更新全书APEX、MainlineAPEX 模块构建与推送按问题场景查找问题场景相关章节解决方向系统无法启动第3、4章检查Bootloader、GKI内核、init、APEX挂载触摸屏不工作第5章检查input驱动、校准、AIDL HAL 绑定屏幕不显示第6章检查LCD驱动、DRM/KMS、BLAST-Sync无声音第7章检查ALSA、AAH、Audio HAL (AIDL)传感器数据异常第8章检查IIO、AIDL Sensor HAL 实现耗电严重第9章分析WakeLock、Adaptive Battery、eBPF 监控WiFi连接失败第10章检查驱动、wpa_supplicant、WiFi 6E 频段蓝牙配对问题第10章检查HCI、LE Audio、AIDL BT HALAPEX更新失败全书检查APEX签名、兼容性、回滚状态按开发任务查找开发任务相关章节步骤指引添加 GKI vendor module第3章编写驱动 → GKI symbol 检查 → 编译 .ko → 签名加载适配新触摸屏AIDL第5章I2C驱动 → 注册input设备 → AIDL HAL 实现 → 配置IDC适配新LCDDRM第6章LCD驱动 → DRM bridge/panel → DTS配置 → BLAST-Sync适配音频CodecAAH第7章Codec驱动 → AAH 实现 → AIDL 路由配置添加新传感器AIDL第8章IIO驱动 → AIDL Sensor HAL → 校准构建 APEX 模块全书apex 规则编写 → Bazel 构建 → 签名 → OTA 测试与T8000项目的关联T8000 NVR项目硬件架构T8000 NVR设备 ├── CPU: ARM SoC ├── Display: HDMI输出 ├── Network: Ethernet WiFi 6 ├── Storage: eMMC SD卡 ├── Audio: Line out └── Sensors: 温度传感器各章节与T8000的关联章节T8000应用实际场景第3章系统移植基于 GKI 2.0 定制Android系统、适配硬件平台第5章输入系统IR遥控IR-Keymap → AIDL Input HAL第6章显示系统HDMI输出DRM HWC BLAST-Sync第7章音频系统Line out音频路由ALSA AAH第9章电源管理NVR待机模式Adaptive Battery Suspend第10章网络通信Ethernet WiFi 6 连接优化T8000常见问题排查问题1NVR设备启动慢排查步骤 1. 读第4章分析启动日志dmesg logcat 2. 读第3章优化内核配置GKI defconfig 裁剪 3. 读第9章检查电源管理Suspend-to-RAM 配置 ★ Android 16 新增排查点 4. 检查 APEX 加载时间apexd 日志 5. 检查 eBPF 程序加载是否阻塞启动 6. 使用 bootanalyer 分析各阶段耗时 调试命令 dmesg | grep Freeing unused kernel # 内核启动完成时间 logcat -b events | grep boot_progress # Android启动阶段 logcat -b events | grep apexd # APEX 加载阶段 bootanalyze # 完整启动时间分析问题2HDMI无输出排查步骤 1. 读第6章检查Display驱动DRM/KMS 2. 检查DRM状态: cat /sys/class/drm/card0/status 3. 检查HWComposer: dumpsys SurfaceFlinger ★ Android 16 新增排查点 4. 检查 BLAST-Sync 同步状态 5. 检查 HWC AIDL 服务是否正常运行 调试命令 cat /sys/class/drm/card0/status # DRM状态 dumpsys SurfaceFlinger --displays # 显示信息含 BLAST-Sync lshal | grep graphics.composer # HWC AIDL 服务状态问题3网络连接不稳定排查步骤 1. 读第10章检查WiFi驱动cfg80211 2. 检查网络配置 3. 分析网络日志 ★ Android 16 新增排查点 4. 检查 WiFi 6E 6GHz 频段支持 5. 检查 AIDL WiFi HAL 绑定状态 6. 使用 eBPF 网络跟踪 调试命令 iw dev wlan0 info # WiFi信息 iw reg get # 监管域6GHz 频段需正确设置 ethtool eth0 # 以太网状态 logcat -b radio | grep -i wifi # WiFi日志 bpftool prog show # eBPF 网络程序状态学习建议1. 理论与实践结合第一遍通读笔记理解架构2-3小时/章第二遍结合源码画流程图1天/章第三遍动手实践编写驱动2-3天/章2. 搭建实验环境必备工具# 编译工具链sudoaptinstallbuild-essential gcc-arm-linux-gnueabihf# 调试工具sudoaptinstallminicom gdb-multiarch# 内核开发sudoaptinstalllibncurses-devbcbison flex# ★ Android 16 新增工具sudoaptinstallclang lld llvm# GKI 2.0 要求 Clang 编译sudoaptinstallbpftool# eBPF 工具pip3install--userbazelbuild# Bazel 构建Android 16 默认推荐硬件ARM开发板树莓派、RK3399、Pixel 开发板等USB转串口线查看内核日志JTAG调试器高级调试★ 支持 GKI 2.0 的开发板如 Cuttlefish 模拟器模拟器推荐# Android 16 推荐使用 Cuttlefish官方 GKI 参考设备# 支持 GKI 2.0、AIDL HAL、APEX 等完整特性repo init-uhttps://android.googlesource.com/platform/manifest\-bandroid16-qpr1-release lunch aosp_cf_x86_64_phone-userdebug m-j3. 驱动开发技巧GKI 2.0 时代编写 GKI 兼容驱动的步骤1. 阅读硬件芯片手册Datasheet 2. 参考类似驱动代码drivers/目录 3. 编写驱动框架probe/remove/ioctl等 4. 实现硬件操作寄存器读写 5. 注册到子系统input/fb/sound等 6. ★ GKI 2.0确保只使用 GKI 导出的 symbol 7. ★ GKI 2.0使用 abigdiff 检查 ABI 兼容性 8. ★ GKI 2.0编译为独立 .ko 模块非内建 9. 编译测试调试GKI 2.0 Vendor Module 开发要点# 1. 检查 symbol 是否在 GKI 允许列表中grepsymbol_name/lib/modules/$(uname-r)/Module.symvers# 2. 使用 kati/bazel 编译 vendor modulem vendor_module.ko# 3. ABI 兼容性检查必须通过abidiff --report-changes-only\--suppressionsgki/abi_symbollist.rsc\old_vmlinux new_vmlinux# 4. 加载 vendor moduleinsmod /vendor/lib/modules/my_driver.ko调试驱动的方法# 查看内核日志dmesg|tail-100# 加载驱动模块insmod my_driver.ko lsmod|grepmy_driver# 查看设备节点ls-l/dev/my_device# 跟踪系统调用strace-eopen,ioctl my_app# ★ Android 16 新增eBPF 跟踪bpftool prog load my_trace.o /sys/fs/bpf/cat/sys/kernel/debug/tracing/trace_pipe4. 与Framework层知识串联完整调用链示例触摸事件 - Android 16 版本硬件触摸屏 ↓ 中断 [内核] 触摸屏驱动 (第5章) ↓ input_event() [内核] Input子系统 ↓ /dev/input/eventX [HAL] AIDL Input HAL (android.hardware.input.IInputDevice) ↓ Binder IPC [Framework] InputReader (卷2-第8章) ↓ [Framework] InputDispatcher (卷2-第8章) ↓ [Framework] WindowManagerService (卷2-第8章) ↓ [Framework] 预测性手势处理Android 16 新增 ↓ [应用] View.onTouchEvent()Android 16 关键变化HAL 层从 HIDL 迁移到 AIDL新设备强制GKI 2.0 统一内核vendor 驱动以 .ko 加载APEX 模块化支持 Mainline 独立更新eBPF 用于性能和电源监控学习顺序建议先学本书底层 → 上层注意 Android 16 的架构变化再学卷1-3上层 → 底层理解 Framework 如何与 AIDL HAL 交互最后串联完整调用链从硬件到应用★ 额外学习GKI 2.0、AIDL HAL、APEX 构建本书未覆盖需补充重点难点分析5/5 五星重点必须掌握章节难点突破方法Android 16 变化第3章设备树、BSP开发参考现有DTS文件、画硬件连接图GKI 2.0 框架、vendor module ABI第5章Input子系统、多点触摸协议分析event数据、画状态机AIDL Input HAL 接口定义第6章DRM/KMS、HWComposer理解显示Pipeline、画buffer流转图BLAST-Sync、AIDL Composer HAL第7章ALSA框架、ASoC架构理解音频路由、画数据流图AAH、LE Audio (LC3)第10章cfg80211/mac80211、HCI协议阅读协议栈源码、抓包分析WiFi 6E/7、LE Audio、AIDL HAL常见误区误区正确理解章节否 HAL层是内核的一部分是 HAL层运行在用户空间通过 Binder 与 Framework 通信第1章否 设备树只用于ARM架构是 x86也可以使用ACPI或DT第3章否 Input驱动只能用于触摸屏是 键盘、鼠标、手柄、遥控器都用Input第5章否 Framebuffer已过时是 DRM/KMS 是现代标准Framebuffer 仅兼容旧设备第6章否 ALSA只能用于音频播放是 ALSA支持播放、录音、MIDI、LE Audio第7章否 HIDL 仍是 HAL 标准是 Android 14 新设备强制使用 AIDL HAL全书否 内核由厂商自行编译是 GKI 2.0 下使用 Google 统一内核 vendor .ko第3章配套开发工具内核开发工具# 内核配置makemenuconfig# 图形化配置makesavedefconfig# 保存配置# ★ GKI 2.0 内核编译使用 Bazelbazel build //common:kernel_aarch64--configfastbuild# 编译 vendor modulebazel build //vendor/my_device:my_driver.ko# 编译设备树makedtbs# ABI 兼容性检查abidiff --report-changes-only old.vmlinux new.vmlinux# 驱动调试modprobe-rmy_driver# 卸载模块insmod my_driver.ko# 加载模块dmesg-c# 清空并查看日志HAL调试工具# ★ AIDL HAL 服务管理Android 16 标准lshal# 列出所有 HAL 服务含 AIDL 和 HIDLlshal|grepinput# 查看 Input HAL 服务状态lshal|grepgraphics# 查看 Graphics HAL 服务状态# AIDL HAL 接口调试aidl-cli--help# AIDL 工具dumpsys-l# 列出所有 dumpsys 服务# Audio HAL (AAH AIDL)tinymix# 音频路由控制tinyplay test.wav# 播放测试tinycap out.wav# 录音测试dumpsys media.audio_flinger# AudioFlinger 状态# Sensor HAL (AIDL)dumpsys sensorservice# 传感器信息sensor_test# 传感器测试工具# Graphics HAL (AIDL BLAST-Sync)dumpsys SurfaceFlinger# 显示信息screenrecord# 录屏测试显示性能dumpsys SurfaceFlinger --disp-sync# BLAST-Sync 状态网络调试工具# WiFi调试WiFi 6E/7iw dev wlan0 scan# 扫描WiFiiw dev wlan0 scan freq5925-7125# 扫描 6GHz 频段WiFi 6Ewpa_cli status# WiFi连接状态tcpdump-iwlan0# 抓包分析# Bluetooth调试LE Audiobtmgmt info# 蓝牙控制器信息btmon# 蓝牙协议分析支持 LE Audio LC3hcitool lescan# LE 扫描# ★ Android 16 新增eBPF 网络跟踪bpftool prog show# 列出 eBPF 程序bpftool map dump# 查看 eBPF map 数据学习效果检验自测题基础题第1-4章Android HAL层的作用是什么AIDL HAL 相比 HIDL 有什么优势repo sync和repo init的区别如何切换到 Android 16 分支设备树Device Tree的作用GKI 2.0 下 DTS 如何处理Bootloader的主要任务是什么Android 16 启动链有何变化init.rc中如何定义服务APEX 模块如何在 init 阶段挂载进阶题第5-7章Input子系统的三层架构是什么AIDL Input HAL 接口如何定义DRM和Framebuffer的区别BLAST-Sync 解决了什么问题ALSA和TinyALSA的关系AAHAndroid Audio HAL架构如何工作HWComposer的作用是什么AIDL Composer HAL 的接口变化多点触摸协议Type A和Type B的区别高级题第8-10章 Android 16IIO子系统如何工作AIDL Sensor HAL 如何实现WakeLock如何阻止系统休眠Adaptive Battery 如何优化cfg80211和mac80211的关系WiFi 6E/7 驱动有何新要求HCI协议栈的层次结构LE AudioLC3、Broadcast Audio架构RIL如何与Modem通信GKI 2.0 下 vendor module ABI 如何保证APEX 模块如何构建和推送Mainline 更新机制如何工作实践项目项目1编写 GKI 2.0 兼容的 LED 驱动目标控制GPIO实现LED闪烁以 GKI vendor module 形式加载 涉及第3章GKI 2.0 框架 驱动框架 步骤 1. 编写驱动代码probe/remove/sysfs 2. 确保只使用 GKI 导出的 symbol 3. 使用 bazel 编译为 .ko 模块 4. 通过 abidiff 检查 ABI 兼容性 5. 在 Cuttlefish 或开发板上加载测试 验证cat /sys/class/leds/myled/brightness ★ Android 16 特色GKI symbol 检查、ABI 兼容性验证项目2使用 AIDL 实现 Input HAL 接口目标为新的I2C触摸屏芯片实现 AIDL Input HAL 涉及第5章Input子系统 AIDL HAL 开发 步骤 1. 编写 I2C 驱动代码内核层 2. 注册 input 设备 3. 定义 AIDL HAL 接口.aidl 文件 4. 实现 AIDL HAL 服务C 5. 配置 SELinux 策略 6. 配置 IDC 文件 验证 lshal | grep input # 检查 AIDL 服务 getevent -l /dev/input/event2 # 验证事件上报 ★ Android 16 特色AIDL HAL 完整开发流程项目3构建和部署 APEX 模块目标将设备专属功能打包为 APEX 模块支持独立更新 涉及全书APEX 构建 OTA 机制 步骤 1. 编写 apex 构建规则Bazel 2. 配置 APEX 签名密钥 3. 构建 APEX 文件 4. 测试 APEX 安装和激活 5. 测试 APEX 回滚机制 6. 配置 OTA 推送流程 验证 apexd logcat # APEX 安装日志 cmd apex list # 已安装 APEX 列表 ★ Android 16 特色Mainline 模块化更新项目4优化T8000启动时间到15秒内目标减少冷启动时间到15秒内 涉及第3、4、9章 Android 16 特性 步骤 1. 分析启动日志dmesg、logcat、bootanalyze 2. 优化 GKI 内核配置移除不需要的驱动 3. 优化 APEX 加载策略并行挂载、延迟非关键 APEX 4. 优化init.rc并行启动服务、延迟非关键服务 5. 优化电源管理快速 suspend-to-RAM 6. 使用 eBPF 跟踪启动瓶颈 验证bootanalyze 测量从上电到 Home 界面的时间 ★ Android 16 特色bootanalyze 工具、eBPF 启动分析进阶学习资源推荐书籍《Linux设备驱动程序》LDD3《深入Linux内核架构》《Linux内核设计与实现》★《GKI 2.0 开发者指南》Google 官方文档推荐网站kernel.org - Linux内核官网source.android.com - Android官方文档developer.android.com/about/versions/16 - ★ Android 16 官方页面source.android.com/docs/core/architecture/aidl/aidl-hals - ★ AIDL HAL 官方文档source.android.com/docs/core/architecture/kernel/gki-release - ★ GKI 2.0 文档source.android.com/docs/core/architecture/apex - ★ APEX 模块文档eLinux.org - 嵌入式Linux Wikics.android.com - Android 源码交叉引用推荐Codelabs★ GKI 2.0 实践 Codelab - 搜索 “GKI”★ AIDL HAL 开发 Codelab - 搜索 “AIDL HAL”★ APEX 模块构建 Codelab - 搜索 “APEX”推荐工具Source Insight代码阅读Understand代码分析JLink/OpenOCDJTAG调试Logic Analyzer硬件信号分析★bpftooleBPF 程序开发和调试★bazelAndroid 16 构建系统★Cuttlefish官方 GKI 参考设备模拟器★abidiffGKI ABI 兼容性检查学习进度追踪章节进度第1章Android系统概述含 AIDL HAL 概览第2章Android源码下载及编译含 Bazel 构建第3章Android内核及系统移植含 GKI 2.0第4章Android启动过程详解含 APEX 启动第5章Android输入系统含 AIDL Input HAL第6章Android显示系统含 BLAST-Sync第7章Android音频系统含 AAH LE Audio第8章Android传感器系统含 AIDL Sensor HAL第9章Android电源管理含 Adaptive Battery eBPF第10章Android通信系统含 WiFi 6E/7 LE Audio完成度0/10 (0%)实践项目进度项目1编写 GKI 2.0 兼容的 LED 驱动项目2使用 AIDL 实现 Input HAL 接口项目3构建和部署 APEX 模块项目4优化T8000启动时间到15秒内与其他学习资料的关联完整学习路径1. 《深入理解Android内核设计思想》(本书) ↓ 掌握内核和HAL层注意对照 Android 16 架构变化 2. GKI 2.0 官方文档 ↓ 掌握通用内核镜像和 vendor module 开发 3. AIDL HAL 官方文档 ↓ 掌握 AIDL 接口定义和 HAL 服务实现 4. 《深入理解Android》卷1 ↓ 掌握Native Services和系统启动 5. 《深入理解Android》卷2 ↓ 掌握Framework核心服务注意 AIDL HAL 交互变化 6. 《深入理解Android》卷3 ↓ 掌握ART虚拟机和Native实现 7. APEX Mainline 官方文档 ↓ 掌握模块化构建和独立更新机制 8. 《Android开发艺术探索》 ↓ 掌握应用层开发和性能优化知识互补本书章节对应卷1-3章节形成完整调用链Android 16 变化第5章Input驱动卷2-第8章WMS输入触摸事件完整路径AIDL Input HAL第6章Display驱动卷1-第7章SurfaceFlinger显示系统完整路径BLAST-Sync AIDL Composer第7章Audio驱动卷1-第6章AudioFlinger音频系统完整路径AAH LE Audio第9章Power驱动卷2-第5-7章PowerManager电源管理完整路径Adaptive Battery eBPFAndroid 16 关键变化速查领域旧架构本书原版Android 16 架构影响章节HAL 接口语言HIDL (.hal)AIDL (.aidl)第1、5-10章内核构建厂商自编译GKI 2.0 统一内核第2、3章Vendor 驱动内建到 zImage独立 .ko 模块第3章构建系统Make KatiBazel Soong第2章显示同步VSYNC HWComposerBLAST-Sync第6章音频 HAL传统 Audio HALAAH LE Audio第7章电源管理WakeLock DozeAdaptive Battery eBPF第9章WiFiWiFi 5 (802.11ac)WiFi 6E/7 (802.11ax/be)第10章蓝牙BT Classic BLELE Audio (LC3)第10章系统更新整包 OTAAPEX 模块化更新全书祝您学习愉快掌握 Android 内核、HAL 层和 Android 16 新架构如有问题或建议请随时反馈。

更多文章