了解Android源代码存储库的基本命名方案

jgr*_*gro 5 repository repository-design android-source

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

例如,在存储库的根目录中,"框架"目录究竟是什么?这与"packages"目录有什么不同?

Bja*_*sen 6

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

  • 仿生

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

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

    • Android拥有非常独特的模块化构建系统,它本身就构建在普通的make文件之上.例如,build/target/products您将找到启动时看到的所有通用构建目标lunch.
  • CTS

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

    • dalvik虚拟机.Android使用java作为框架的更好部分以及所有应用程序.由于每个应用程序在其自己的uid下作为自己的进程运行,因此在其自己的虚拟机中,虚拟机必须具有相当小的内存占用,因此Android选择使用称为dalvik的Java自定义虚拟机.达尔维克的来源就在这里.
  • 发展

    • 我没有真正使用过此存储库,但似乎支持开发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})中.
  • libcore

    • 我不知道这个.
  • NDK

    • 机开发工具包,允许应用程序开发人员将其部分(或全部)应用程序编码为本机代码(通常使用c和c ++).基本上它是交叉编译到Android运行的不同cpu架构的工具链.
    • 所有 Android构建工件都放在这里.因此删除out文件夹将完全清理源.out被划分成不同的文件夹中,主要的有hosttarget其中编译为主机的东西(例如ADB)和目标设备(大多数机器人系统的动作)是分开的.下面还有进一步的细分,一般来说out文件夹排序很好,所以你应该自己探索一下.
    • 这些包含与Android一起构建的所有默认应用程序,提供程序,输入方法等.手机应用程序,联系人,日历,计算器,默认软键盘等都放在这里.它们不是第三方应用程序,它们是内部应用程序,其中许多是针对非公共android api构建的.因此,这里的大多数应用程序无法针对公共Android SDK构建(例如在eclipse中),但必须构建为完整Android构建过程的一部分.
  • 预建

    • 与Android一起作为二进制文件分发的东西.这里的主要内容是用于构建Android for ARM(现在也是x86)的交叉编译器.它们是预先构建的,因此您无需自己构建交叉编译器.(如果您除了Android之外还需要编译交叉编译器,这可能会非常耗时.)
  • SDK

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

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

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