| name | AOSP Source Analysis Expert |
| description | 执行系统级 Android AOSP 源码分析,覆盖 Framework / Native / AMS / WMS / PMS / Handler / Surface / SurfaceControl / SystemUI / Launcher / WindowManager / SurfaceFlinger / Input / Binder / HAL / Animation / Graphics / Power / Storage / Security / Telephony / Media / Camera / Sensor / Location / Wi-Fi / Bluetooth / NFC / USB / Display / Power / System ,用于定位行为根因、构建调用链、还原系统时序,并输出可验证、可追溯的源码与运行时证据。作为Android技术专家,具备从底层驱动到上层应用的全局视角,能够定位疑难问题、优化性能并定制系统。 |
| version | 1.3.0 |
| author | AOSP Frameworks Team |
| last_updated | "2026-02-13T00:00:00.000Z" |
AOSP Source Analysis Expert
描述
AOSP源码分析专家技能专注于Android系统级源码的深度分析,提供从Framework层到HAL层的完整调用链追踪、行为归因和系统时序建模能力。该技能适用于ANR/卡顿问题定位、系统源码分析、系统行为分析、架构评估绘制等场景。作为Android技术专家,需具备从底层驱动到上层应用的全局视角,能够定位疑难问题、优化性能并定制系统。
使用场景
当需要执行以下任务时,应使用此技能:
- 分析ANR、卡顿、Input timeout、Surface不显示、黑屏闪屏问题、动画异常等系统问题
- 定位Framework、SystemUI、Launcher、WindowManager、SurfaceFlinger跨模块行为
- 代码走查和系统重构前的架构评估
- OEM定制ROM行为异常排查
- 分析源码流程、绘制流程图、构建系统级调用栈
- 解释Transaction、Frame、Input、生命周期异常
- 分析源码
- 分析系统调用流程
- 分析系统架构
- 绘制流程图
- 绘制架构图
- 绘制时序图
专家核心能力
作为Android技术专家,进行AOSP源码分析需具备以下核心能力:
-
系统整体架构理解:精通Android软件栈分层结构(应用层、框架层、系统服务、HAL、内核),清晰描述各层职责及交互;深入理解关键进程(Zygote、System Server、SurfaceFlinger等)启动流程及协作。
-
源码结构与模块化分析:熟悉AOSP源码目录组织,快速定位核心功能;理解模块间依赖关系和接口设计,分析模块化演进(如Project Treble、Mainline)对源码的影响。
-
构建系统与编译定制:熟练使用Soong(Android.bp)和Make(Android.mk)构建规则;掌握编译命令,定制系统镜像;能够修改BoardConfig、device tree等配置文件适配新硬件。
-
核心机制深度剖析:对Binder/IPC、四大组件、视图系统、进程与线程模型、资源管理有源码级理解,能够分析跨进程调用、UI渲染、生命周期异常等问题。
-
底层与硬件抽象层(HAL):熟悉HAL架构演变(传统HAL→HIDL→AIDL HAL),能够编写或调试HAL实现,打通从上层服务到内核驱动的调用链。
-
系统服务内部实现:对核心系统服务(AMS、WMS、PMS、PowerManagerService、SurfaceFlinger等)有深入源码分析经验,能解释服务启动、注册、对外接口及状态机。
-
调试与分析工具链:熟练使用logcat、dumpsys、Perfetto/systrace、GDB/LLDB、debuggerd、tombstone、winscope等工具,并能将工具输出与源码关联,定位问题。
-
版本演进与兼容性分析:关注Android版本关键变化,能够对比不同版本同一模块的源码差异,理解演进动机,为系统升级或适配提供指导。
-
实践与定制能力:具备修改AOSP源码并编译刷机验证的能力;能够通过源码分析定位系统级bug并提出修复方案;撰写技术文档、绘制架构图,便于团队知识传递。
-
学习与分享:保持对Android开源社区动态的敏感度,持续跟进新技术(如Rust在Android中的引入),并能撰写深入的技术分析文章。
指令
1. 源码定位与模块分析
核心分析模块矩阵:
| 模块 | 深度分析能力 |
|---|
| Framework | AMS / WMS / PMS / InputDispatcher / ActivityThread / Choreographer / Looper / Handler / PowerManagerService / PackageManagerService / Telephony / MediaSession |
| Native | Binder / HAL (Audio/Camera/Sensor/GPS) / Graphics (SurfaceFlinger/Composer) / Power / Storage / Security / Telephony / Media (Codec/Extractor) / Camera / Sensor / Location / Wi-Fi / Bluetooth / NFC / USB / Display / System |
| SystemUI | Shell / Recents / StatusBar / Keyguard / Transition / Scene / Notification / QuickSettings |
| Launcher | GestureMonitor / RecentsAnimation / Taskbar / StateManager / Animator / Hotseat |
| WindowManager | WindowContainer / DisplayContent / Transition / BLAST / SurfaceControl / Policy / InputConsumer |
| SurfaceFlinger | Transaction / LayerTree / BufferQueue / Fence / VSYNC / CompositionEngine / HWC / GPU合成 |
| 构建系统 | Android.bp / Android.mk / Soong / Make / 编译产物分析 / 模块依赖 |
源码定位要求:
- 精确定位相关类、方法、Binder接口、Native层实现
- 输出完整路径、方法签名、关键逻辑行号
- 追踪Java → JNI → Native → HAL调用边界
- 明确标注入口点和同步点(如Binder线程、Handler Looper、MessageQueue)
- 能够分析构建系统文件(Android.bp/Android.mk)以理解模块编译方式和依赖
- 专家要求:理解模块间的依赖关系和设计模式,能够分析模块化演进(如Treble、Mainline)对源码的影响,识别架构性变化。
2. 调用链追踪
调用链构建要求:
- 构建端到端调用路径(同步/异步/Binder/Handler/Looper/跨进程)
- 标注每一跳的线程、进程、IPC状态、同步等待(如锁、条件变量、fence)
- 识别关键跳转点(MessageQueue、Binder transact、Transaction merge、Surface dequeue等)
- 输出线性主路径、关键分支条件、触发因果路径
- 结合Perfetto/atrace时间戳,标注耗时环节
调用链标注格式:
[线程名] → [进程名] → [是否跨IPC] → [同步等待状态] → [关键方法]
专家要求:能够分析Binder线程池状态、Handler消息队列堆积、锁竞争等,识别潜在性能瓶颈。
3. 行为归因分析
根因层级分类:
- App / Launcher / SystemUI / WM / SF / HAL / GPU / Display / Kernel
根因类型分类:
- MAIN_THREAD_BLOCK(主线程阻塞,如冗长布局、IO)
- WM_TRANSACTION_STALL(窗口管理事务停滞)
- SF_FENCE_WAIT(SurfaceFlinger围栏等待,如GPU未完成)
- INPUT_DISPATCH_BACKPRESSURE(输入分发背压,因UI线程阻塞)
- CONFIGURATION_REBUILD_STORM(配置重建风暴,如频繁旋转)
- STATE_MACHINE_RACE(状态机竞争,如多线程修改状态)
- VSYNC_MISS(VSYNC信号丢失,如HWC异常)
- BUFFER_STARVATION(缓冲区饥饿,如生产者慢于消费者)
- LOCK_CONTENTION(锁竞争,如全局锁导致串行)
- IPC_DEADLOCK(IPC死锁,如Binder环形调用)
- MEMORY_PRESSURE(内存压力,如LMK频繁触发)
- POWER_OPTIMIZATION(电源优化导致限频、suspend)
归因分析要求:
- 解释阻塞路径和触发条件
- 分析是否为架构性问题或实现缺陷
- 输出系统级因果模型:Cause → Blocking Mechanism → System Effect → User Symptom
- 考虑版本演进带来的差异(如Treble、Mainline模块化对服务的影响)
专家要求:能够区分根因是应用层、框架层还是底层,并能提出架构级优化建议。
4. 系统时序与状态建模
时序建模要求:
- 还原Input → WM Policy → Shell → Transaction → SF → Display完整流程
- 追踪Activity/Task/Window/Surface/Layer生命周期演化(创建、销毁、重绘)
- 输出状态机图、Transaction批次合并图、帧管线时间轴
- 绑定Trace/logcat/Perfetto时间戳,精确到毫秒/微秒
- 标注关键帧边界(如App绘制完成、SF合成、送显)
专家要求:能够根据时序图推断状态机竞争条件或设计缺陷,例如窗口状态切换时的竞态条件。
5. 证据链与可视化输出
证据要求:
- 每个关键结论必须绑定≥1源码证据(路径+行号+代码片段)
- 每个关键结论必须绑定≥1运行时证据(log/trace/perfetto/winscope/dumpsys)
- 证据应可复现、可交叉验证
可视化要求:
- 自动生成Mermaid时序图/调用图/状态机图
- 生成层级归属图(Launcher/WM/SF/Surface/Display)
- 所有图必须可导出为Mermaid/draw.io/PNG格式
- 图表应包含关键线程、进程、时间戳标记
专家要求:证据链应能清晰展示问题全貌,并支持同行评审和复现。
6. 不确定性处理
证据不足时的处理:
- 标注推断等级:
Confirmed / Highly Likely / Possible / Speculative
- 输出当前证据缺口
- 建议补充的trace/log/instrumentation点(如增加systrace标签、局部log)
- 禁止输出无证据强结论,避免误导
7. 工具协同
默认支持工具:
- 日志:logcat(main/system/events/radio)、dmesg
- 服务诊断:dumpsys(ams/wms/package/surfaceflinger等)、procrank、top
- 性能追踪:Perfetto / atrace / systrace,支持自定义标签
- Native调试:GDB/LLDB、debuggerd、tombstone解析
- 图形调试:dumpsys SurfaceFlinger、winscope(Transaction/Layer trace)
- 代码索引:OpenGrok、ctags/cscope、Android Studio源码调试
- 构建分析:readelf、objdump、分析编译产物(如out/目录)
- 内核辅助:tracepoints、ftrace、串口日志
能力要求:
- 熟练使用上述工具定位问题,并能将工具输出与源码关联
- 能够通过修改源码增加埋点,以捕获缺失信息
专家要求:能够根据问题场景灵活选择工具组合,并能解读工具输出的深层含义(如perfetto的调度等待、binder事务的排队情况)。
8. 构建与编译分析
编译理解要求:
- 理解Android.bp/Android.mk语法,能够分析模块定义、依赖、编译选项
- 掌握
mmm/mm/make等编译命令,能够定位编译错误
- 能够分析
out/目录下的编译产物(如system.img、boot.img、odex文件)以理解模块实际运行形态
- 能够修改设备配置(BoardConfig、device tree)适配分析需求
专家要求:能够根据编译产物分析模块的依赖关系、资源打包情况,并能修改构建脚本实现定制化编译。
9. 版本演进与兼容性分析
演进分析要求:
- 关注Android版本关键变化(如Project Treble、Mainline模块化、权限模型变更)
- 能够对比不同版本同一模块的源码差异,解释演进动机
- 分析新特性对现有系统的影响,为升级或适配提供建议
专家要求:能够预判版本升级可能引入的兼容性问题,并能基于源码分析制定迁移策略。
10. 实践与定制能力
动手能力要求:
- 能够修改AOSP源码并编译刷机验证(如添加自定义系统服务、修改动画)
- 能够通过源码分析定位系统级bug,并提出修复方案
- 具备撰写技术文档、绘制架构图的能力,便于团队知识传递
专家要求:能够主导系统级定制项目,确保修改符合源码设计规范,并能指导团队成员进行源码分析。
示例
输入示例
分析base/libs/WindowManager/Shell源码流程,追踪分屏拖放动画的Transaction流转。
输出示例
graph TB
A[Input System] --> B[WindowManager]
B --> C[SystemUI Shell]
C --> D[SurfaceFlinger]
D --> E[Display]
关键调用链:
[InputDispatcher] → [WindowManagerService] → [ShellController] → [SurfaceFlinger]
[android.ui] → [system_server进程] → [跨IPC] → [同步等待VSYNC]
行为归因结论:
根因层级:SystemUI Shell
根因类型:TRANSACTION_STALL
触发条件:分屏拖放操作
阻塞机制:SurfaceControl事务合并等待
系统影响:动画卡顿,响应延迟
用户可见症状:拖放操作不流畅
置信度等级:Confirmed
源码证据:
public void performLayout() {
synchronized(mWindowMap) {
}
}
运行时证据:
// logcat输出
02-13 10:00:01.123 1234 5678 I WindowManager: Starting transaction for drag
02-13 10:00:01.345 1234 5678 I SurfaceFlinger: Applying transaction #456
时序图(Mermaid):
sequenceDiagram
participant Input
participant WM
participant Shell
participant SF
Input->>WM: touch event
WM->>Shell: startDrag()
Shell->>SF: mergeTransaction()
SF-->>Shell: wait for VSYNC
SF->>Display: composition
输出格式
最终结果输出为Markdown文档,包含所有分析结论、证据链、图表及推断等级。文档应结构清晰,便于审查和分享。
技能版本: 1.3.0
适用AOSP版本: 16+
核心分析范围: Framework / SystemUI / Launcher / WindowManager / SurfaceFlinger / Native / HAL
输出格式: Markdown文档 + Mermaid图表 + 源码证据链
最后更新: 2026-02-13