一、整体结构
Android源码根目录 | 描述 |
art | ATR运行环境 |
bionic | 系统C库 |
bootable | 启动引导相关代码 |
build | 存放系统编译规则及generic等基础开发包配置 |
cts | Android兼容性测试套件标准 |
dalvik | Dalvik虚拟机 |
developers | 开发者目录 |
development | 与应用程序开发相关 |
device | 设备相关配置 |
docs | 参考文档目录 |
external | 开源模组相关文件 |
frameworks | 应用程序框架,Android系统核心部分,由Java和C++编写 |
hardware | 硬件抽象层相关代码 |
libcore | 核心库相关文件 |
libnativehelper | 动态库,实现JNI库的基础 |
out | 编译完成后在此目录输出成果物 |
pdk | 本地开发套件 |
platform_testing | 平台测试 |
prebuilts | X86和ARM架构下预编译的一些资源 |
sdk | SDK和模拟器 |
packages | 应用程序包 |
system | 底层文件系统库、应用和组件 |
toolchain | 工具链文件 |
tools | 工具文件 |
Makefile | 全局Makefile文件,用来定义编译规则 |
二、应用层部分
应用层位于Android系统最上层,开发者开发的应用程序以及系统内置的应用程序都在应用层。
源码根目录中的 packages 目录对应着系统的应用层。
packages目录 | 描述 |
apps | 核心应用程序 |
experimental | 第三方应用程序 |
inputmethods | 输入法目录 |
providers | 内容提供者目录 |
screensavers | 屏幕保护 |
services | 通信服务 |
wallpapers | 墙纸 |
三、应用框架层部分
应用框架层的主要实现代码在 framworks/base 和 frameworks/av 目录下。
framworks/base目录结构如下:
framworks/base目录 | 描述 |
api | 定义API |
core | 核心库 |
docs | 文档 |
include | 头文件 |
libs | 库 |
media | 多媒体相关库 |
nfc-extras | 与NFC相关 |
opengl | 2D/3D图形API |
sax | XML解析器 |
telephony | 电话通信管理 |
tests | 测试相关 |
vr | VR相关 |
cmds | 重要命令:am、app_proce等 |
data | 字体和声音等数据文件 |
graphics | 图形图像相关 |
keystore | 数据前面证书相关 |
location | 地理位置相关库 |
native | 本地库 |
obex | 蓝牙传输 |
packages | 设置、TTS、VPN程序 |
services | 系统服务 |
test-runner | 测试工具相关 |
tools | 工具 |
wifi | WIFI相关 |
四、C/C++程序库部分
列举几个比较重要的、常用的
位置 | 描述 |
bionic | Google开发的系统C库 |
framework/av/media | 系统媒体库 |
framework/native/opengl | 第三方图形渲染库 |
framework/native/services/surfaceflinger | 图形显示库,主要复制图形的渲染、叠加和绘制等 |
external/sqlite | SQLite数据库的C++实现 |
五、硬件抽象层 HAL部分
改动最大的部分,不同厂商不同平台的实现不同。