如何理解android root tree的目录结构?

时间:2012-01-28 15:51:41

标签: android

我已经下载了android源代码。我想对源代码进行一些修改,以嵌入一些目前不存在的功能。但问题是我无法理解源代码是如何组织的,可以在哪里找到哪种文件。所以,如果有人能够帮助我理解它会非常有用。

1 个答案:

答案 0 :(得分:138)

以下是您下载Android源代码时的简短版本。我将遗漏一些小的目录,并深入研究几个重要的目录。基本上你会得到什么(根据当前的冰淇淋三明治发布),按字母顺序排列:

  • Bionic - Android的C-runtime。请注意,Android并不像大多数Linux发行版那样使用glibc。相反,c库被称为仿生,主要基于BSD派生的源。在此文件夹中,您将找到c-library,math和其他核心运行时库的源代码。
  • 可启动 - 启动和启动相关的代码。其中一些是遗留的,fastboot协议信息可能很有趣,因为它是由许多设备(如Nexus设备)中的引导加载程序实现的。
  • 构建 - 构建系统实现,包括所有核心make文件模板。这里的一个重要文件是envsetup.sh脚本,它可以在使用平台源时为您提供很多帮助。在shell中运行此脚本将使命令能够设置环境变量,在源代码文件中构建特定模块和grep。
  • Cts - 兼容性测试。测试套件,以确保构建符合Android规范。
  • Dalvik - 实施Dalvik虚拟机的源代码
  • 开发 - 与开发相关的项目,例如sdk和ndk工具的源代码。通常不是在使用目标平台时触摸的文件夹。
  • 设备 - 针对不同设备的产品特定代码。这是为不同的Nexus设备,构建配置等找到硬件模块的地方。
  • 外部 - 包含所有外部开源项目的源代码,例如SQLite,Freetype和webkit。
  • 框架 - 此文件夹对于Android至关重要,因为它包含框架的源代码。在这里,您将找到关键服务的实现,例如带有程序包和活动管理器的System Server。 Java应用程序API和本机库之间的许多映射也在这里完成。
  • 硬件 - 硬件相关的源代码,例如Android硬件抽象层规范和实现。该文件夹还包含参考无线电接口层(与调制解调器端通信)实现。
  • libcore - Apache Harmony。
  • libnativehelper - 与JNI一起使用的助手函数。
  • (内核) - 不是默认源代码下载的一部分,但您可以通过手动下载或将存储库添加到repo工具来访问此代码。包含Android内核版本的源代码。
  • Out - 运行make后,构建输出将放在此处。文件夹结构是/ target / product /。在模拟器的默认构建中,输出将放在out / target / product / generic中。您可以在此处找到模拟器用于启动的图像(或者如果您正在构建硬件目标,则可以下载并闪存到设备中)。
  • Packages - 包含默认应用程序的源代码,例如联系人,日历,浏览器。
  • 预建 - 包含以二进制形式分发的文件以方便使用。示例包括用于不同开发机器的交叉编译工具链。
  • 系统 - 核心Android系统的源代码文件。这是在Dalvik VM和任何基于Java的服务启用之前启动的最小Linux系统。这包括init进程的源代码和提供平台动态配置的默认init.rc脚本
  • 工具 - 各种IDE工具。

除此之外,您还有隐藏的.repo目录,其中包含repo实用程序的源代码。它还包含清单,指定要为此Android源项目跟踪的git存储库。如果您有自己的附加内容,则可以通过在此处添加本地清单来自动跟踪它们。

对于平台框架的修改,源代码树的device / sample文件夹中提供了一些指令。这将向您展示如何向Android添加API,而无需修改核心框架。