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

sun*_*nny 55 android

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

BMB*_*BMB 146

以下是您下载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的Helper函数.
  • (内核) - 不是默认源代码下载的一部分,但您可以通过手动下载或将存储库添加到repo工具来访问此代码.包含Android内核版本的源代码.
  • Out - 运行make后,构建输出将放在此处.文件夹结构是/ target/product /.在模拟器的默认构建中,输出将放在out/target/product/generic中.您可以在此处找到模拟器用于启动的图像(或者如果您正在构建硬件目标,则可以下载并闪存到设备中).
  • 包 - 包含默认应用程序的源代码,如联系人,日历,浏览器.
  • 预建 - 包含以二进制形式分发的文件以方便使用.示例包括用于不同开发机器的交叉编译工具链.
  • 系统 - 核心Android系统的源代码文件.这是在Dalvik VM和任何基于Java的服务启用之前启动的最小Linux系统.这包括init进程的源代码和提供平台动态配置的默认init.rc脚本
  • 工具 - 各种IDE工具.

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

对于平台框架的修改,源代码树的设备/示例文件夹中有一些可用的指令.这将向您展示如何在不修改核心框架的情况下将API添加到Android.

  • (http://forum.xda-developers.com/showthread.php?t=2620389) 的链接会很有用。 (2认同)