gpt4 book ai didi

repository - 了解Android源代码库的基本命名方案

转载 作者:行者123 更新时间:2023-12-03 20:25:25 25 4
gpt4 key购买 nike

我刚刚根据 official instructions 下载了完整的 4.0.1_r1 Android 源代码库.有人可以帮助我了解存储库的基本命名方案吗?

比如在仓库的根目录下,“frameworks”目录到底是什么?这与“packages”目录有何不同?

最佳答案

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

  • 仿生
  • 专门为 Android 使用和开发的标准 c 库。
  • 可启动
  • 包含引导加载程序(设备制造商通常提供)和在手机启动到恢复模式时执行的恢复应用程序。
  • 构建
  • Android 有非常独特的模块化构建系统,它本身是建立在普通的 make 文件之上的。例如在 build/target/products您会找到启动时看到的所有通用构建目标 lunch .
  • 克拉
  • 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} 的条目。你可以 build 的。
  • 文档
  • 据我了解这实际上是http://source.android.com的来源.
  • 外部
  • Android 引入的几乎所有第三方项目都位于此处,这些项目构成了基本的 Android Linux 操作系统。它们维护在自己的 git 存储库中,这使得从上游拉取新版本变得容易。您会看到类似 bzip2 的内容, dbus , ping , tcpdump ,以及这里的许多其他项目。
  • 框架
  • 这是Android框架的来源。您在为 Android 构建应用程序时使用的所有内容。我认为它大约是 50% 的 Java 代码和 50% 的 C++(有时是 C),它们使用 jni 绑定(bind)在一起。 .例如,当您在应用程序中播放某些音频时,您可能正在访问 AudioManager .来源AudioManager以及所有支持的内部Android源AudioManager放在 frameworks/base/media 下.您会在 frameworks/base/ 下的某处找到大部分 Android SDK。 .
  • 硬件
  • Android 与一组库对话,这些库然后控制硬件(例如振动器、灯光、接近传感器、gps、音频等)。这些库统称为 HAL(硬件抽象层)。一些默认实现包含在 hardware 中。文件夹,但是制造商实现自己的库并将它们放置在 hardware/{manufcaturename} (或在 device/{manufacture} 中)。
  • libcore
  • 我不知道这个。
  • ndk
  • native development kit它允许应用程序开发人员将他们的部分(或全部)应用程序编码为 native 代码(通常使用 c 和 c++)。基本上它是一个工具链,可以交叉编译到运行 Android 的不同 CPU 架构。

  • 所有 Android 构建工件都放置在这里。所以删除 out文件夹将完全清理源。 out分为不同的文件夹,主要是hosttarget为主机(例如 adb)和目标设备(大多数 android 系统)编译的东西是分开的。下面还有进一步的分割,通常是 out文件夹排序得很好,所以你应该自己探索一下。
  • 包裹
  • 这些包含与 Android 一起构建的所有默认应用程序、提供程序、输入方法等。手机应用、通讯录、日历、计算器、默认软键盘等都放在这里。它们不是 3rd 方应用程序,它们是内部应用程序,其中许多是针对非公共(public) android api 构建的。因此,这里的大多数应用程序无法针对公共(public) Android SDK(例如在 Eclipse 中)进行构建,而必须作为完整 Android 构建过程的一部分进行构建。
  • 预建
  • 与 Android 一起作为二进制文件分发的东西。这里的主要内容是用于为 ARM(现在还有 x86)构建 Android 的交叉编译器。它们是预先构建的,因此您不必自己实际构建交叉编译器。 (如果您除了 Android 之外还必须编译交叉编译器,这可能会非常耗时。)
  • SDK
  • 属于 Android SDK 的所有工具,例如 ddms、模拟器、sdkmanager 等。
  • 系统
  • 在安卓设备上运行的核心系统进程。这些是 native (c 或 c++)程序。媒体服务就是这种系统服务的一个例子。

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

    关于repository - 了解Android源代码库的基本命名方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13386456/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com