摘自公众号:Android源码学习
Android 9.0.0_r3版本的源码:
结构名称及说明:
名称 | 说明 |
Android.bp | Android7.0开始代替Android.mk文件,它是告诉ndk将jni代码编译成动态库的一个脚本 |
art/ | Android Runtime,ART运行环境,一种App运行模式,区别于传统的Dalvik虚拟机,旨在提高Android系统的流畅性 |
bionic/ | bionic C库,基础C库源代码,Android改造的C/C++库 |
bootable/ | 启动引导相关代码,Android程序启动导引,适合各种bootloader的通用代码,包括一个recovery目录 |
bootstrap.bash | 脚本 |
build/ | 存放系统编译规则及generic等基础开发包配置 |
compatibility/ | Android兼容性计划 |
cts/ | Android兼容性测试套件标准 |
dalvik/ | dalvik JAVA虚拟机相关内容 |
developers/ | 开发者参考文档 |
development/ | 应用程序开发相关 |
device/ | 设备相关配置 |
external | android使用的一些开源的模组 |
frameworks/ | 核心框架——java及C++语言 |
hardware/ | 部分厂家开源的硬解适配层HAL代码 |
kernel/ | Linux Kernel,不过Android默认不提供,需要单独下载,只有一个tests目录 |
libcore/ | 核心库相关文件 |
libnativehelper/ | 动态库,实现JNI库的基础 |
Makefile | 全局Makefile文件,用来定义编译规则 |
packages/ | 应用程序包 |
pdk/ | Plug Development Kit 的缩写,本地开发套件 |
platform_testing/ | 平台测试 |
prebuilts/ | x86和arm架构下预编译的一些资源 |
sdk/ | sdk及模拟器 |
system/ | 底层文件系统库、应用及组件——C语言 |
test/ | Android Vendor测试框架 |
toolchain/ | 工具链文件 |
tools/ | 工具文件 |
- 应用层
位于整个Android系统的最上层,开发者开发的应用程序和系统级应用程序都位于此。packages目录对应着系统应用层。
上图简要说明如下:
名称 | 说明 |
apps/ | 核心应用程序 |
experimental/ | 第三方应用程序 |
inputmethods/ | 输入法目录 |
providers/ | 内容提供者目录 |
screensavers/ | 屏幕保护 |
services/ | 通信服务 |
wallpapers/ | 墙纸 |
-
应用程序框架层
是系统的核心部分,frameworks目录对应着应用程序框架层
上图简要说明如下:
名称 说明 av/ 多媒体框架 base/ Android源码的主要核心目录 compile/ 编译相关 data-binding/ 数据绑定 ex/ ex文件解析器 hardware/ 硬件适配接口 layoutlib/ 布局相关 minikin/ Android原生字体,连体字效果 ml/ 机器学习 multidex/ Multi-dex Loader,多dex加载器 native/ native实现 opt/ 一些软件 rs/ Render Script,可创建3D接口 support/ framework支持文件 wilhelm/ 基于Khronos的OpenSL ES/OpenMAX AL的audio/multimedia实现 -
av目录下
上图简要说明如下:
名称 | 说明 |
Android.bp | Android7.0开始代替Android.mk文件,它是告诉ndk将jni代码编译成动态库的一个脚本 |
camera/ | 多媒体的相机相关部分 |
CleanSpec.mk | 编译文件,定义每次编译前的特殊清理步骤,build/core/cleanbuild.mk 会执行这些清除步骤 |
cmds/ | 命令源码 |
drm/ | 数据保护 |
include/ | 头文件 |
media/ | 多媒体部分 |
MODULE_LICENSE_APACHE2 | 授权模块 |
NOTICE | 通知信息 |
OWNERS | 所有者信息说明 |
packages/ | 包含多媒体组件和所有者信息说明 |
services/ | 服务部分 |
soundtrigger/ | 语音识别架构 |
tools/ | 工具包 |
base目录下
上图简要说明如下:
Android.bp | 编译配置文件 |
Android.mk | 编译配置文件 |
apct-tests/ | 性能优化测试 |
api/ | java的api接口,修改了接口文件请及时更新此目录下的文件(make update-api) |
CleanSpec.mk | 编译文件,定义每次编译前的特殊清理步骤,build/core/cleanbuild.mk 会执行这些清除步骤 |
cmds/ | android系统启动时用到的commands,重要命令:am、a pp_proce等 |
config/ | 关于版权说明、隐藏API文档和预加载相关等配置 |
core/ | framework的核心框架组件 |
data/ | android下的资源(字体、声音、视频、软盘等) |
docs/ | 文档,android项目说明 |
drm/ | 实现权限管理,数字内容解密等模块的工作 |
graphics/ | 图像渲染模块 |
keystore/ | 秘钥库,和数据签名证书相关 |
libs/ | 库信息(界面、存储、USB) |
location/ | 地理位置相关库 |
lowpan/ | 低功耗无线网络 |
media/ | 多媒体相关库 |
MODULE_LICENSE_APACHE2 | 授权模块 |
native/ | 本地方法实现(传感器、输入、界面、窗体) |
nfc-extras/ | 近场通讯NFC相关 |
NOTICE | 通知信息 |
obex/ | 蓝牙传输 |
opengl/ | 图形API,2D和3D图形绘制 |
packages/ | 框架层的实现(界面、服务、存储),设置、TTS、VPN程序 |
pathmap.mk | 该文件定义了一个列表pathmap_INCL,列表中每项是"短名:路径"对。宏函数include-path-for将会使用这个列表,来通过短名获取相对于的路径, |
PREUPLOAD.cfg | 保存预上传设置 |
proto/ | 协议框架 |
rs/ | 资源框架 |
samples/ | 例子程序 |
sax/ | XML解析器 |
services/ | 各种服务程序 |
telecomm/ | Telecom通信框架 |
telephony/ | 电话通讯框架 |
test-legacy/ | 测试配置 |
test-mock/ | Mock测试 |
test-runner/ | 测试工具相关 |
tests/ | 测试相关 |
tools/ | 工具 |
vr/ | 虚拟现实相关 |
wifi | wifi无线网络 |