Repository 了解Android源代码库的基本命名方案
我刚刚下载了完整的4.0.1r1Android源代码库。有人能帮我理解存储库的基本命名方案吗Repository 了解Android源代码库的基本命名方案,repository,android-source,repository-design,Repository,Android Source,Repository Design,我刚刚下载了完整的4.0.1r1Android源代码库。有人能帮我理解存储库的基本命名方案吗 例如,在存储库的根目录中,“frameworks”目录到底是什么?这与“packages”目录有何不同?在过去几年中,我花了很多时间研究android源代码,所以让我来解释一下根目录中的不同文件夹。大致如下(取决于android版本): 仿生 专门为Android使用和开发的标准c库 可引导 包含引导加载程序(设备制造商通常提供)和恢复应用程序,当手机引导至恢复模式时,将执行该应用程序 构建
例如,在存储库的根目录中,“frameworks”目录到底是什么?这与“packages”目录有何不同?在过去几年中,我花了很多时间研究android源代码,所以让我来解释一下根目录中的不同文件夹。大致如下(取决于android版本):
- 仿生
- 专门为Android使用和开发的标准c库
- 可引导
- 包含引导加载程序(设备制造商通常提供)和恢复应用程序,当手机引导至恢复模式时,将执行该应用程序
- 构建
- Android有非常独特的模块化构建系统,它本身构建在普通make文件之上。例如,在
中,您将找到启动build/target/products
时看到的所有通用构建目标sunch
- Android有非常独特的模块化构建系统,它本身构建在普通make文件之上。例如,在
- cts
- 。当设备制造商想要获得设备认证(从而获得Google Play和其他专有应用程序)时,他们需要通过CTS。CTS的源包含在此目录中
- dalvik
- 。Android将java用于框架的更好部分以及所有应用程序。因为每个应用程序都在自己的uid下作为自己的进程运行,在自己的虚拟机中,虚拟机必须具有相当小的内存占用,所以Android选择使用一个名为dalvik的定制Java虚拟机。达尔维克的源头就在这里
- 发展
- 我还没有真正使用过这个存储库,但它似乎支持开发android应用程序的东西放在这里
- 设备
- 每个设备供应商都将定义其特定设备的所有内容放在这里。例如,您可以提供一个
来精确定义应该为您的设备构建哪些应用程序(以及其他一些东西)。这会在午餐菜单中添加一个名为devices/{yourname}/products/{yourdevice}.mk
的条目,您可以构建该条目{yourdevice}
- 每个设备供应商都将定义其特定设备的所有内容放在这里。例如,您可以提供一个
- 文档
- 据我所知,这实际上是
http://source.android.com
- 据我所知,这实际上是
- 外部
- 几乎所有安卓引入的、构成安卓Linux操作系统基础的第三方项目都位于这里。它们被维护在自己的git存储库中,这使得从上游获取新版本变得容易。您可以在这里看到类似于
,bzip2
,dbus
,ping
,以及许多其他项目tcpdump
- 几乎所有安卓引入的、构成安卓Linux操作系统基础的第三方项目都位于这里。它们被维护在自己的git存储库中,这使得从上游获取新版本变得容易。您可以在这里看到类似于
- 框架
- 这是Android框架的来源。为Android构建应用程序时使用的所有东西。我认为它是在大约50% java代码和50% C++(有时C)的地方,它是用绑定在一起的。例如,当您在应用程序中播放某些音频时,您可能正在访问
。AudioManager
的源代码以及所有支持AudioManager
的内部Android源代码都放在AudioManager
下。您将在frameworks/base/media
下找到大部分Android SDK的实现frameworks/base/
- 这是Android框架的来源。为Android构建应用程序时使用的所有东西。我认为它是在大约50% java代码和50% C++(有时C)的地方,它是用绑定在一起的。例如,当您在应用程序中播放某些音频时,您可能正在访问
- 硬件
- Android与一组库对话,这些库随后控制硬件(如可控震源、灯光、接近传感器、gps、音频等)。这些库统称为HAL(硬件抽象层)。一些默认实现包含在
文件夹中,但是制造商实现自己的库并将它们放在hardware
(或hardware/{manufcaturename}
)中device/{manufacture}
- Android与一组库对话,这些库随后控制硬件(如可控震源、灯光、接近传感器、gps、音频等)。这些库统称为HAL(硬件抽象层)。一些默认实现包含在
- libcore
- 我不知道这个
- ndk
- 允许应用程序开发者将一些(或全部)应用程序编码为本地代码(通常在C和C++中)。基本上,它是一个交叉编译到Android运行的不同cpu架构的工具链
- out
- 所有Android构建工件都放在这里。因此,删除
文件夹将彻底清除源代码out
被分为不同的文件夹,主要的文件夹是out
和host
,其中为主机(如adb)和目标设备(大部分android系统)编译的内容是分开的。下面还有进一步的细分,一般来说,target
文件夹的排序很好,所以你应该自己去探索一下out
- 所有Android构建工件都放在这里。因此,删除
- 套餐
- 这些包含所有与Android一起构建的默认应用程序、提供者、输入方法等。手机应用程序、通讯录、日历、计算器、默认软键盘等都放在这里。它们不是第三方应用程序,而是内部应用程序,其中许多应用程序是根据非公共android API构建的。因此,这里的大多数应用程序都无法针对公共Android SDK(例如eclipse)进行构建,但必须作为完整Android构建过程的一部分进行构建
- 预构建的
- 与Android一起作为二进制文件分发的东西。这里的主要内容是用于为ARM构建Android(现在也是x86)的交叉编译器。它们是预先构建的,因此您不必实际构建交叉编译器