5

我刚刚根据官方说明下载了完整的 4.0.1_r1 Android Source Code 存储库。有人可以帮助我了解存储库的基本命名方案吗?

例如,在存储库的根目录中,“frameworks”目录到底是什么?这与“包”目录有何不同?

4

1 回答 1

6

在过去的几年里,我花了很多时间研究 android 源代码,所以让我来解释一下根目录中的不同文件夹。这些大致是(取决于android版本):

  • 仿生

    • 专门为 Android 使用和开发的标准 c 库。
  • 可引导

    • 包含引导加载程序(设备制造商通常提供)和在手机启动进入恢复模式时执行的恢复应用程序。
  • 建造

    • Android 有非常独特的模块化构建系统,它本身是建立在普通的 make-file 之上的。例如,build/target/products您会发现启动时看到的所有通用构建目标lunch
  • cts

    • 兼容性测试套件。当设备制造商想要让他们的设备获得认证(从而获得 Google Play 和其他专有应用程序)时,他们需要通过 CTS。CTS 的源代码包含在此目录中。
  • 达尔维克

    • dalvik 虚拟机。Android 将 java 用于框架的大部分以及所有应用程序。因为每个应用程序在自己的 uid 下作为自己的进程运行,在自己的虚拟机中,虚拟机必须占用相当小的内存,因此 Android 选择使用名为 dalvik 的 Java 自定义虚拟机。dalvik的源码放在这里。
  • 发展

    • 我还没有真正使用过这个存储库,但似乎支持开发 android 应用程序的东西都放在这里了。
  • 设备

    • 每个设备供应商都将定义其特定设备的所有内容放在这里。例如,您可以devices/{yourname}/products/{yourdevice}.mk准确定义应该为您的设备构建哪些应用程序(以及其他一些东西)。这会在午餐菜单中添加一个名为{yourdevice}您可以构建的条目。
  • 文档

    • 据我了解,这实际上是http://source.android.com.
  • 外部的

    • 几乎所有由 Android 引入并构成基本 Android Linux 操作系统的第三方项目都位于此处。它们维护在自己的 git 存储库中,这使得从上游拉取新版本变得容易。您会在这里看到bzip2, dbus, ping,tcpdump和许多其他项目。
  • 构架

    • 这是Android框架的来源。您在为 Android 构建应用程序时使用的所有内容。我认为它大约是 50% 的 Java 代码和 50% 的 C++(有时是 C),它们使用jni绑定在一起。例如,当您在应用程序中播放一些音频时,您可能正在访问AudioManager. 源代码AudioManager以及所有支持的内部 Android 源代码AudioManager都放在frameworks/base/media. 您会发现大部分 Android SDK 在frameworks/base/.
  • 硬件

    • Android 与一组库对话,然后控制硬件(例如振动器、灯光、接近传感器、gps、音频等)。这些库统称为 HAL(硬件抽象层)。该文件夹中包含一些默认实现hardware,但是制造商实现了自己的库并将它们放置在hardware/{manufcaturename}(或device/{manufacture})中。
  • 库核心

    • 我不知道这个。
  • ndk

    • 机开发工具包允许应用程序开发人员将他们的部分(或全部)应用程序编码为本机代码(通常在 c 和 c++ 中)。基本上,它是一个交叉编译到 Android 运行的不同 cpu 架构的工具链。
  • 出去

    • 所有Android 构建工件都放置在此处。因此,删除out文件夹将完全清除源。out分为不同的文件夹,主要的文件夹是为主机(例如adb)和目标设备(大多数android系统)编译的东西被分开的地方hosttarget下面还有进一步的细分,一般来说out文件夹的排序很好,所以你应该自己探索一下。
    • 这些包含与 Android 一起构建的所有默认应用程序、提供程序、输入方法等。手机应用、通讯录、日历、计算器、默认软键盘等都放在这里。它们不是 3rd 方应用程序,它们是内部应用程序,其中许多是针对非公共 android api 构建的。所以这里的大多数应用程序不能针对公共 Android SDK 构建(例如在 eclipse 中),但必须作为完整 Android 构建过程的一部分进行构建。
  • 预建

    • 与 Android 一起作为二进制文件分发的东西。此处的主要内容是为 ARM(现在还有 x86)构建 Android 的交叉编译器。它们是预先构建的,因此您不必自己实际构建交叉编译器。(如果您除了 Android 还必须编译交叉编译器,这可能会非常耗时。)
  • sdk

    • 属于 Android SDK 的所有工具,例如 ddms、模拟器、sdkmanager 等。
  • 系统

    • 在安卓设备上运行的核心系统进程。这些是本机(c 或 c++)程序。Mediaservice 就是这种系统服务的一个例子。

这完全来自我使用 Android 源代码的经验,我没有任何(其他)参考资料。我希望这可以帮助您了解文件夹结构。

于 2012-11-15T06:42:03.353 回答