AOSP-Android系统源码目录结构
AOSP-Android系统源码目录结构
当我们下载好源码以后,就会得到这些,以下是Android7.1的源码
out下载完没有哈,这个是我编译过的,所以就有了out目录了。
这里面的目录各自存放什么内容呢?
我们先看一下Android系统的架构图
Android系统架构
Application层
也就是我们的Application层,应用层。上层应用嘛。
Framework层
架构层,我们的包管理器Package Manager、Activity管理器Activity Manager,WindowManager,各种系统Service都在这层,我们的ContextImpl也在这一层。后面的话可以对应地去看看源码。
NativeLib和Runtime
本地库的代码用C/C++写的,比如OpenGL,Sqlite,Webkit之类的 。
Runtime就是运行时的意思,自从Android5.0以后,AndroidRuntime(ART)取代了Dalvik虚拟机
HAL hardware abstract lay 硬件抽象层
抽象层,其实就是接口。Android系统可以跑在很多种硬件设备上,HAL层就是硬件接口层,供硬件商去实现。
Linux内核
Android系统是基于Linux内核编写的,在此基础上,google的工程师还添加了其他的内容,比如说Binder实现IPC通讯,系统的安全、内存管理等。
以上就是Android系统架构的大概介绍,接下来我们看看Android源码各个目录分别存放什么内容吧。
Android源码目录
- abi Application Binary Interface 应用程序二进制接口,abi相信同学们在SO库调用上遇到过,如果不支持该平台的话就说不ABI不支持。
- art Android Runtime 安卓运行时。这个会提前把字节码编译成二进制机器码保存起来,执行的时候加载速度比较快。Dalvik虚拟机则是在加载以后再去编译的,所以速度上ART会比Dalvik快一点。牺牲空间来赢取时间。
- bionic 基础库,Android系统与Linux内核的桥梁。Bionic 音标为 bīˈänik,翻译为"仿生"。
- bootable 系统启动引导相关程序
- build 用于构建Android系统的工具,也就是用于编译Android系统的
- cts Compatibility Test Suite 兼容性测试
- dalvik dalvik虚拟机,用于解析执行dex文件的虚拟机
- developers 开发者目录
- developerment 开发目录,比如说应用,application就在里面了,apps
- devices 设备相关的配置信息,什么索尼、HTC、自己的产品,就可以定义在这个目录下了
- docs 文档
- external 开源模组相关文件
- frameworks 系统架构,Android的核心了
- hardware hal层代码,硬件抽象层
- libcore 核心库
- libnativehelper native帮助库,实现JNI的相关文件
- ndk native development kit
- out 输出目录,编译以后生成的目录,相关的产出就在这里了
- packages 应用程序包。一些系统的应用就在这里了,比如说蓝牙,Launcher,相机,拨号之类的。
- pdk Plug-in Development Kit (PDK) is designed to help you build your own pattern projects
- platform_testing 平台测试
- prebuilts x86/arm架构下预编译的文件
- sdk software development kit
- system 底层系统文件
- toolchain 工具链
- tools 工具文件
- Makefile mk文件,用于控制编译