之前介绍了《Android源码的下载,编译,刷机》,这篇介绍一下Android源码的目录结构,因为目录结构非常复杂,所以这里只介绍一级目录,进入一级目录查看目录结构
#查看一级目录和文件
tree -L 1
导入Android Studio后是这样子的
也可以在线查看Android源码结构:https://cs.android.com/android/platform/superproject/
虽然目录很多很复杂,但framework开发需要接触到的目录还是比较有限的,有些目录我也不知道干啥用的,这里我简单介绍一下各个目录的作用,经常打交道的目录我会标注出来并详细介绍:
- art:Android RunTime的核心文件
- bonic:翻译过来是仿生的意思,可能是存放的仿生功能相关的c/c++库文件
- bootable:存放启动引导文件
- build:存放系统编译规则和基础开发包配置
- cts:Compatibility Test Suite,GMS认证所用到的测试套件,GMS全称为Google Mobile Service,也就是设备安装了GMS才可以使用Google提供的服务,比如安装Google Play,Youtube之类的,只有通过了cts测试套件所有测试项才能安装GMS
- dalvik:用于 Android 平台的 Java 虚拟机,5.0之前叫DVM,之后叫ART
- developers:开发者参考文档
- development:app开发参考项目
- device:Android支持的各种设备及其配置
- external:Android引入的第三方库,Google会把一些比较优秀的开源库纳入到源码里面,比如app开发常用的okhttp,zxing,sqlite等
- frameworks:这个是framework开发经常打交道的目录,里面存放着app开发的基础框架,比如所有的View,所有的SystemService都是在这个目录下
- hardware:这里主要存放硬件相关的文件,hal层的文件都在这儿
- kernel:顾名思义,Android系统的内核
- libcore:Android中的Java核心类库
- libnativehelper:Android中Java类库native实现助手
- out:编译生成的文件都在这个目录下,比如jar包,so库,img镜像等
- packages:这个也是framework开发经常打交道的目录,所有Google原生的系统应用和组件都在这个目录下,比如Launcher(桌面),Settings(设置),Input(输入法),ScreenSaver(屏保)等
- pdk:platform develop kit,平台开发组件
- platform_testing:平台测试程序
- prebuilts:预编译相关
- sdk:Java层SDK
- system:系统文件
- test:单测试程序
- toolchain:工具链
- tools:工具集
- vendor:厂商相关文件,不同厂商对应的硬件不同,Google为各个厂商预留了一个目录,各个厂商将自己的一些特有文件存放在此目录下,比如厂商自己写的一些app应用,驱动文件,协议标准文件等等,常见的厂商有qualcomm(高通,简称qcom),sumsung(三星)
具体每个目录及其二级目录的作用可以参考这篇博客,我觉得介绍得很细致-《Android 12 源码目录结构》