为什么android源码这么大?

Ksh*_*rma 2 linux android linux-kernel

指南初始化构建环境说 -

注意:下载的源代码大小约为 8.5GB。您将需要超过 30GB 的可用空间来完成单个构建,并且需要最多 100GB(或更多)的空间来完成全套构建。

我的问题 -

  1. 据我所知,目前存储库中不存在供应商特定的应用程序和图形,它基本上包含内核源代码、通用驱动程序和基本工具。那么为什么它的尺寸这么大呢?
  2. 我到底为什么需要 100GB 来构建它?
  3. 是否可以获得压缩源 tarball?

kcs*_*rom 5

Ryan Li 提供了部分答案,指出您正在下载所有存储库的历史记录。随着时间的推移,这往往会累积起来,并使所有源的初始下载占用相当大的空间。

构建占用如此多空间的几个原因(无论如何不是详尽的列表):

  • 有很多源可以生成大量目标文件、库、dex 等,用于构建最终图像。使用 C/C++ 工具链,链接器可以丢弃给定可执行文件中未使用的对象文件部分。除了目标文件往往包含有关各个部分的大量额外信息之外,几乎总是意味着加在一起的目标文件将比您构建的任何可执行文件更大。
  • 除了目标文件之外,输出(中间)目录中还包含库和可执行文件本身。
  • 除了上述两个之外,您还拥有生成的文件系统映像。
  • 我不是 Java 构建专家,但我猜测有中间文件可以获取生成的 .dex 文件。
  • 如果您想要进行全套构建,则需要将普通用户构建(~30GB)乘以至少三倍再加上更多(其他包包含在 eng 和 userdebug 构建类型中)。

如果您想要更详细的答案,我建议您下载源代码,进行构建,然后在其上运行磁盘空间分析器工具(目前没有方便的构建来执行此操作)。