【问题标题】:Understanding the basic naming scheme of the Android source code repository了解Android源码仓库的基本命名方案
【发布时间】:2012-11-14 20:05:12
【问题描述】:

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

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

【问题讨论】:

    标签: repository android-source repository-design


    【解决方案1】:

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

    • 仿生

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

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

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

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

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

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

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

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

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

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

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

      • 我不知道这个。
    • ndk

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

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

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

      • 作为 Android SDK 一部分的所有工具,例如 ddms、模拟器、sdkmanager 等。
    • 系统

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-04
      相关资源
      最近更新 更多