一、整体结构
| 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部分
改动最大的部分,不同厂商不同平台的实现不同。
本文详细解读了Android源码的结构,包括ART运行环境、Bionic系统C库、bootable引导、开发者目录、应用层、应用框架层(涉及media、telephony等)、C/C++库(如Bionic、OpenGL、SQLite)、硬件抽象层(HAL)及其差异化实现。

1189

被折叠的 条评论
为什么被折叠?



