1. 根目录
instruction:Master-android - eLinux.org
文件夹名 | 内容 |
---|
art | 全新的ART运行环境 | bionic | 系统C库 | bootable | 系统启动引导代码 | build | 存放Android系统编译规则,以及generic等基础开发配置包。 | cts | Android 兼容性测试套件标准 | dalvik | Dalvik虚拟机 | developers | 开发者目录,包含构建App和一些demo代码 | development | 与应用成虚开发相关 | device | 设备相关配置 | docs | 参考文档目录 | external | 开源模组相关文件,一些开源第三方组件,例如:glide、junit、dagger2等 | frameworks | 应用程序框架,Android系统核心部分,由Java和C++编写 | hardware | 主要包含了 android?HAL(硬件抽象层)相关代码。硬件抽象层介于 Linux内核驱动程序与 Android 系统之间。对 Linux 驱动进行了封装,使操作系统级别可以忽略底层实现的细节 | libcore | 核心库相关文件 | libnativehelper | 动态库,实现JNI库的基础 | out | 编译完成后生成的所有都在这里 | pdk | Platform Development kit的缩写,平台开发套件,仅包含了一些供硬件抽象层开发使用的必要组件,供一些 OEM 厂商用来适配及测试最新的Android 系统,加快第三方厂商的更新速度。 加快OEM厂商的update速度 | platform_testing | 平台测试 | prebuilts | x86和ARM架构下预编译的一些资源 | sdk | sdk和模拟器 | packages | 系统应用程序包 | system | 底层文件系统库,应用和组件 | toolchain | 工具链文件 | tools | 工具文件 | vendor | 包含不同供应商的私有的二进制库 | makefile | 全局Makefile文件,用来定义编译规则 |
2.Bootable
文件夹名 | 内容 |
---|
libbootloader | 为boot引导系统启动 | recovery | 恢复模式系统,系统升级等等 |
frameworks 应用框架层
应用框架层是系统的核心部分,向上提供接口给应用层调用,向下与c/c++程序库以及硬件抽象层衔接,其主要实现代码在frameworks/base 和 frameworks/av下
frameworks/base
文件夹名 | 内容 | 文件夹名 | 内容 |
---|
api | 定义api | cmds | 重要命令:am\app_procee等 | core | 核心库 | data | 字体和声音等文件 | docs | 文档 | graphics | 与图形图像相关 | include | 头文件 | keystore | 与数据签名证书相关 | libs | 库 | location | 地理位置相关 | media | 多媒体库 | native | 本地库 | nfc-extras | 与NFC相关 | obex | 蓝牙传输 | opengl | 2D/3D图形API | packages | 设置TTS、VPN程序 | sax | xml解析器 | services | 系统服务 | telephony | 电话通信管理 | test-runner | 测试工具相关 | tests | 与测试相关 | tools | 工具 | vr | 与VR相关 | wifi | wifi无线网络 |
3.packages应用层部分
文件夹名 | 内容 |
---|
apps | 核心应用程序,例如:蓝牙、浏览器、相机、邮件、音乐、NFC | experimental | 第三方应用程序 | inputmthods | 输入法目录 | providers | 内容提供目录,例如:MediaProvider、DownloadProvider、MmsProvider | screensavers | 屏幕保护目录 | services | 通信服务 | wallpapers | 墙纸 |
4.C/C++程序库部分
系统运行库层native中C/C++程序库类型繁多,功能强大,他们并不完全在一个目录中,这里是几个C/C++的重要的程序库所在的目录位置
目录位置 | 内容 |
---|
bionic | Google开发的系统C库,以BSD许可形式开源 | frameworks/av/media | 系统媒体库 | frameworks/native/opengl | 第三方图形渲染库 | frameworks/native/serevices/surfaceflinger | 图形显示库,负责图形渲染、叠加、绘制等 | external/sqlite | 轻量级关系型数据库SQLite的C++实现 |
5.?out目录
5.1? .module_paths目录
在/build/soong/cmd/soong_ui/main.go 中的main 函数中调用build.FindSources(buildCtx, config, f)
在device、vendor、product目录中查找AndroidProducts.mk文件。并将所有的名为AndroidProducts.mk文件路径记录在AndroidProducts.mk.list中。这函数的作用不止如此,还会查找Android.mk、Android.bp、CleanSpec.mk等文件
5.Android架构层级和代码目录的大致对应关系
架构层级 | 代码目录 | Application层 | packages/apps/ | Framework层 | framewordks/ | Libraries层 | 运行库libraries--bilnic/ | Android Runtime? art/? dalvik/? libcore/ | HAL层 | hardware/ | Linux Kenel | kernel/ |
|