1. art - Android Runtime
-
作用: Android运行时环境,替代了Dalvik虚拟机
-
主要功能:
- 提供AOT(Ahead-of-Time)编译
- 管理应用程序的生命周期
- 处理垃圾回收
- 包含dex2oat编译器、ART运行时库等
-
关键组件: runtime/, compiler/, dex2oat/, libartbase/
2. bionic - C库实现
-
作用: Android的C标准库实现
-
主要功能:
- 提供POSIX兼容的C库函数
- 实现动态链接器
- 提供数学库、字符串处理等基础功能
-
关键组件: libc/, libm/, linker/, libstdc++/
3. bootable - 启动相关
-
作用: 系统启动和恢复相关代码
-
主要功能:
- 系统恢复模式(Recovery)
- 启动加载器支持
-
关键组件: recovery/, libbootloader/
4. bsp - Board Support Package
-
作用: 板级支持包,硬件平台相关代码
-
主要功能:
- 特定硬件平台的驱动和配置
- 内核配置和编译
- 工具链和预编译库
-
关键组件: kernel5.4/, device/, bootloader/, modules/
5. frameworks - 应用框架层
-
作用: Android应用开发框架
-
主要功能:
- 提供应用开发API
- 系统服务实现
- 用户界面组件
-
关键组件:
- base/ - 核心框架
- av/ - 音视频框架
- native/ - 原生库
- hardware/ - 硬件抽象层
6. system - 系统服务
-
作用: 系统级服务和库
-
主要功能:
- 系统守护进程
- 安全策略
- 网络服务
- 媒体服务
-
关键组件:
- core/ - 核心系统服务
- vold/ - 卷管理
- netd/ - 网络守护进程
- sepolicy/ - SELinux策略
7. hardware - 硬件抽象层
-
作用: 硬件相关的抽象接口和实现
-
主要功能:
- 硬件抽象层(HAL)接口定义
- 各厂商硬件驱动
- 硬件相关库
-
关键组件:
- interfaces/ - HAL接口定义
- libhardware/ - 硬件库
- qcom/, ti/, samsung/ - 各厂商实现
8. device - 设备配置
-
作用: 特定设备的配置和定制
-
主要功能:
- 设备特定的配置文件
- 厂商定制代码
- 设备初始化脚本
-
关键组件:
- common/ - 通用设备配置
- google/ - Google设备
- generic/ - 通用设备
9. 其他重要目录
- kernel/: Linux内核源码
- external/: 第三方开源项目
- packages/: 系统应用包
- vendor/: 厂商专有代码
- build/: 编译系统
- dalvik/: 旧版Dalvik虚拟机(已废弃)
- libcore/: 核心Java库
- cts/: 兼容性测试套件
- development/: 开发工具
应用层 (packages/)
↓
框架层 (frameworks/)
↓
系统服务层 (system/)
↓
硬件抽象层 (hardware/)
↓
内核层 (kernel/)
以上源码中的每个包下,有大量的子目录或文件,真正在开发中经常用到的目录:
build、frameworks、out、packages、vendor