Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android AOSP回购同步时间过长_Android_Linux_Embedded_Android Source_Platform - Fatal编程技术网

Android AOSP回购同步时间过长

Android AOSP回购同步时间过长,android,linux,embedded,android-source,platform,Android,Linux,Embedded,Android Source,Platform,我正试图从同名书中学习嵌入式Android。作者建议与AOSP姜饼分店合作。因此,我随后下载了源代码: $ repo init -u https://android.googlesource.com/platform/manifest.git -b gingerbread $ repo sync 但是时间太长了。同样从输出来看,在我看来,它似乎也在从其他分支下载源代码(我看到android-5…),这不是我想要的。我想知道这是否就是花这么长时间的原因 有人有过同样的问题吗?请给我一个建议!谢

我正试图从同名书中学习嵌入式Android。作者建议与AOSP姜饼分店合作。因此,我随后下载了源代码:

$ repo init -u https://android.googlesource.com/platform/manifest.git
-b gingerbread

$ repo sync
但是时间太长了。同样从输出来看,在我看来,它似乎也在从其他分支下载源代码(我看到android-5…),这不是我想要的。我想知道这是否就是花这么长时间的原因

有人有过同样的问题吗?请给我一个建议!谢谢

AOSP是一个数千兆字节的下载,所以您可以做的不多。但是,将
-c
/
--current branch
选项传递到
repo sync
会导致repo告诉Git只获取您真正需要的分支,而不是每个存储库的所有分支。对于姜饼这样的旧版本,理论上这应该是非常有益的。但是,Repo使用它通过HTTP下载的Git捆绑包为存储库种子,捆绑包文件不受
-c
选项的影响。使用
--no clone bundle
将禁用捆绑文件。因此,以下Repo命令应产生最小的下载量:

repo sync -c --no-clone-bundle
(请记住,姜饼是一个有几年历史的版本。在许多最新的硬件上,它不会开箱即用。)

大大缩短了我的同步时间。

repo init--depth 1

这是另一个可能提高同步速度的选项,因为它应该只下载最新版本的repos

另见:


以下是我的完整测试命令:

您应该使用以下命令:

示例:对于我个人的AOSP回购

repo init --depth=1 -u https://github.com/zawzaww/aosp-android.git -b android-8.1.0
然后呢,

repo sync  -f --force-sync --no-clone-bundle --no-tags -j$(nproc --all)

您可以在my GitHub上了解更多信息

,但如果您指定一个分支(例如棉花糖),它不应该下载其他分支(牛轧糖、姜饼)吗?例如,如果你用-b指定棉花糖的清单?@KaizerSozay:是的,这就是我想说的。使用
-c
您只需下载所需的分支。通常,如果答案中包含命令的用途说明,以及在不介绍其他分支的情况下解决问题的原因,那么答案会更有帮助。您能详细介绍一下
-j2
开关的作用以及它的帮助吗?
-j
是从
make
知道的开关,它设置了要使用的作业数(并行性)<代码>-j2将作业数设置为2(即使用2个内核)。在Linux上,您通常使用
-j`nproc`
-j$(getconf\u NPROCESSORS\u ONLN)
自动检测内核数。使用
nproc
时不是这种情况。此处的
-j
设置并行网络下载的线程数,该线程数不受CPU限制<代码>-J4在大多数情况下都足够了。我使用android-11.0.0_r3完成了这项工作,但最终还是得到了超过60GB的数据(当时我的磁盘已满,所以我甚至不知道它需要多少数据)。如果到2025年你需要一个专用的2TB驱动器来构建Android,我不会感到惊讶。在撰写本文时,你需要大约400GB的磁盘空间来检查代码并构建一个Android。对于其他构建,需要更多的磁盘空间。我预计这将以每年50-100GB的速度增长。但这只是一个猜测。
repo sync  -f --force-sync --no-clone-bundle --no-tags -j$(nproc --all)