# 源码阅读地图

## 概述

本文档是Android Framework源码阅读的地图，帮助规划源码阅读的顺序和路径。

## 阅读原则

### 1. 由浅入深
- 从基础模块开始
- 逐步深入复杂模块
- 建立知识体系

### 2. 系统化阅读
- 按照功能模块阅读
- 理解模块间关系
- 建立完整理解

### 3. 实践结合
- 阅读结合实践
- 通过调试加深理解
- 记录阅读笔记

## 阅读路径

### 路径1: 系统启动路径
**适合**: 初学者，想理解系统如何启动

**阅读顺序**:
1. **Init进程** [[01-系统启动流程/Bootloader到Init]]
   - 文件: `system/core/init/`
   - 关键类: `init.cpp`, `property_service.cpp`
   - 重点: 理解init进程的作用和属性服务

2. **Zygote进程** [[01-系统启动流程/Zygote进程启动]]
   - 文件: `frameworks/base/core/jni/AndroidRuntime.cpp`
   - 文件: `frameworks/base/core/java/com/android/internal/os/ZygoteInit.java`
   - 关键类: `ZygoteInit`, `ZygoteServer`
   - 重点: 理解Zygote如何fork应用进程

3. **SystemServer** [[01-系统启动流程/SystemServer核心服务]]
   - 文件: `frameworks/base/services/java/com/android/server/SystemServer.java`
   - 关键类: `SystemServer`
   - 重点: 理解系统服务的启动顺序

4. **Launcher启动** [[01-系统启动流程/Launcher启动流程]]
   - 文件: `packages/apps/Launcher3/`
   - 重点: 理解Launcher如何启动

**预计时间**: 2-3周

### 路径2: Activity管理路径
**适合**: 想理解Activity如何工作

**阅读顺序**:
1. **Activity启动** [[02-Activity管理/Activity启动流程（跨进程）]]
   - 文件: `frameworks/base/core/java/android/app/Activity.java`
   - 文件: `frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java`
   - 关键类: `Activity`, `ActivityManagerService`, `ActivityThread`
   - 重点: 理解Activity启动的完整流程

2. **Activity栈管理** [[02-Activity管理/Activity栈管理（Task&Stack）]]
   - 文件: `frameworks/base/services/core/java/com/android/server/am/ActivityStack.java`
   - 文件: `frameworks/base/services/core/java/com/android/server/am/TaskRecord.java`
   - 关键类: `ActivityStack`, `TaskRecord`, `ActivityRecord`
   - 重点: 理解Activity栈的管理机制

3. **生命周期** [[02-Activity管理/生命周期深度解析]]
   - 文件: `frameworks/base/core/java/android/app/Activity.java`
   - 关键方法: `onCreate`, `onStart`, `onResume`等
   - 重点: 理解生命周期的完整流程

4. **异常恢复** [[02-Activity管理/异常恢复机制]]
   - 文件: `frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java`
   - 重点: 理解异常恢复机制

**预计时间**: 3-4周

### 路径3: Window系统路径
**适合**: 想理解UI渲染机制

**阅读顺序**:
1. **WindowManagerService** [[03-Window系统/WindowManagerService架构]]
   - 文件: `frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.java`
   - 关键类: `WindowManagerService`, `WindowState`
   - 重点: 理解窗口管理机制

2. **窗口类型与层级** [[03-Window系统/窗口类型与层级]]
   - 文件: `frameworks/base/core/java/android/view/WindowManager.java`
   - 重点: 理解窗口类型和层级关系

3. **SurfaceFlinger** [[03-Window系统/SurfaceFlinger交互流程]]
   - 文件: `frameworks/native/services/surfaceflinger/`
   - 重点: 理解Surface的合成和显示

4. **触摸事件** [[03-Window系统/触摸事件传递]]
   - 文件: `frameworks/base/services/core/java/com/android/server/wm/InputManagerService.java`
   - 重点: 理解触摸事件的传递机制

**预计时间**: 4-5周

### 路径4: 进程通信路径
**适合**: 想理解进程间通信机制

**阅读顺序**:
1. **Binder机制** [[05-进程与线程通信/Binder机制（内核到Java层）]]
   - 内核: `drivers/android/binder.c`
   - Framework: `frameworks/native/libs/binder/`
   - Java层: `frameworks/base/core/java/android/os/Binder.java`
   - 关键类: `Binder`, `BinderProxy`, `ServiceManager`
   - 重点: 理解Binder的完整机制

2. **Handler机制** [[05-进程与线程通信/Handler机制源码解析]]
   - 文件: `frameworks/base/core/java/android/os/Handler.java`
   - 文件: `frameworks/base/core/java/android/os/Looper.java`
   - 文件: `frameworks/base/core/java/android/os/MessageQueue.java`
   - 关键类: `Handler`, `Looper`, `MessageQueue`
   - 重点: 理解消息循环机制

3. **AIDL** [[05-进程与线程通信/AIDL与HIDL使用与原理]]
   - 文件: `frameworks/base/tools/aidl/`
   - 重点: 理解AIDL的生成和使用

**预计时间**: 3-4周

### 路径5: 性能优化路径
**适合**: 想理解性能优化方法

**阅读顺序**:
1. **启动优化** [[06-性能优化体系/启动优化方法论]]
   - 相关源码: SystemServer, Activity启动流程
   - 重点: 理解启动流程，找出优化点

2. **内存优化** [[06-性能优化体系/内存优化（LeakCanary原理）]]
   - 相关源码: GC机制, 内存管理
   - 重点: 理解内存管理机制

3. **流畅度优化** [[06-性能优化体系/流畅度（Choreographer+VSYNC）]]
   - 文件: `frameworks/base/core/java/android/view/Choreographer.java`
   - 文件: `frameworks/native/services/surfaceflinger/`
   - 重点: 理解VSYNC和Choreographer机制

**预计时间**: 2-3周

## 关键源码文件

### 系统启动
- `system/core/init/init.cpp` - Init进程
- `frameworks/base/core/java/com/android/internal/os/ZygoteInit.java` - Zygote进程
- `frameworks/base/services/java/com/android/server/SystemServer.java` - SystemServer

### Activity管理
- `frameworks/base/core/java/android/app/Activity.java` - Activity类
- `frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java` - AMS
- `frameworks/base/core/java/android/app/ActivityThread.java` - ActivityThread

### Window系统
- `frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.java` - WMS
- `frameworks/native/services/surfaceflinger/` - SurfaceFlinger

### 进程通信
- `drivers/android/binder.c` - Binder驱动
- `frameworks/base/core/java/android/os/Binder.java` - Binder Java层
- `frameworks/base/core/java/android/os/Handler.java` - Handler

### 性能优化
- `frameworks/base/core/java/android/view/Choreographer.java` - Choreographer
- `frameworks/base/core/java/android/app/Application.java` - Application

## 阅读技巧

### 1. 使用工具
- **Source Insight**: 代码浏览和搜索
- **Android Studio**: 代码跳转和调试
- **Grep**: 快速搜索代码

### 2. 阅读方法
- **自上而下**: 从入口开始，逐步深入
- **自下而上**: 从底层实现开始，向上理解
- **关键路径**: 关注关键流程，忽略细节

### 3. 记录笔记
- 记录关键类和函数
- 记录理解的关键点
- 记录疑问和思考

### 4. 实践验证
- 通过调试验证理解
- 修改代码验证机制
- 编写测试验证功能

## 阅读计划

### 第一阶段: 基础理解 (1-2个月)
- 系统启动流程
- Activity管理基础
- 基础调试方法

### 第二阶段: 深入理解 (2-3个月)
- Window系统
- 进程通信机制
- 资源管理

### 第三阶段: 高级应用 (3-6个月)
- 性能优化
- 系统定制
- 安全机制

### 第四阶段: 专家级 (6个月+)
- 内核机制
- 系统架构
- 技术创新

## 相关链接

- [[Android Framework知识体系图]]
- [[技能提升路线图]]
- [[高频问题索引]]
- [[Templates/源码解析模板]]
