跳至主要內容

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文件,用于控制编译