Android Q基线代码存储:.repo目录应在构建前后复制?是否必要?
Android Q源码本地存储与repo目录相关疑问
背景
我是Android开发及Google git-repo新手,已查阅Stack Overflow相关帖子但未解决问题。目前正在将平台提供商的Android Q必要代码下载后存储到本地网络存储,以摆脱对互联网的依赖。原本以为只需下载完成(总大小108GB)后存储即可,但发现构建成功后,.repo/目录大小从65GB增至82GB。
核心疑问
- 应在构建前还是构建后复制
.repo目录? - 考虑到我们的修改将基于该基线源码,且会存储在单独仓库中,不会推送到提供商的仓库,是否有必要复制
.repo目录? .repo目录为何会增大这么多?
构建流程
#1 下载代码(此步骤后总大小108GB) repo init ... repo sync ... #2 应用开发工具包补丁 #3 提取专有对象 #4 构建
构建前各目录大小(单位:MB)
408 ./libnativehelper 444 ./shortcut-fe 896 ./pdk 7648 ./platform_testing 15756 ./build 26944 ./dalvik 30028 ./sdk 44816 ./bionic 85916 ./art 87584 ./libcore 95424 ./hardware 104184 ./toolchain 151840 ./development 170412 ./device 216760 ./bootable 322228 ./vendor 411160 ./test 451172 ./developers 516392 ./system 887852 ./packages 963208 ./kernel 1456688 ./cts 1716288 ./tools 1979908 ./frameworks 8136144 ./external 27217100 ./prebuilts 67886120 ./.repo 112983332 .
构建后各目录大小(单位:MB)
4 ./disregard 408 ./libnativehelper 444 ./shortcut-fe 896 ./pdk 7648 ./platform_testing 16140 ./build 26944 ./dalvik 30028 ./sdk 44816 ./bionic 85916 ./art 87584 ./libcore 95424 ./hardware 104184 ./toolchain 151840 ./development 170420 ./device 216788 ./bootable 411160 ./test 451172 ./developers 516392 ./system 887840 ./packages 1347492 ./kernel 1456688 ./cts 1716220 ./tools 1979884 ./frameworks 2656404 ./vendor 8136032 ./external 27217036 ./prebuilts 85571884 ./.repo 153949272 ./out 287336968 .
解答
1. 构建前还是构建后复制.repo目录?
建议在构建前复制.repo目录。构建过程会生成大量临时文件、构建缓存,甚至修改repo管理的元数据,导致.repo体积无意义膨胀。构建前的.repo是纯净的基线源码仓库元数据,体积更小,更适合作为基线备份。
2. 是否需要复制.repo目录?
- 如果后续需要基于基线重新同步、切换分支、合并上游更新,必须保留
.repo——它是repo工具管理多仓库的核心,包含所有子仓库的远程地址、分支信息、提交历史等关键元数据。 - 若仅需基于当前基线做修改,且所有修改都存到独立仓库、无需再和上游交互,可以考虑不复制,但这种方式灵活性极差,后续无法用repo工具管理源码,只能手动维护子仓库。更稳妥的方式是保留
.repo备份,避免后续回溯基线或同步上游时无据可依。
3. .repo目录为何增大?
构建后.repo变大主要有三个原因:
- 构建缓存积累:部分构建步骤会将缓存数据写入
.repo/cache目录,用于加速后续构建。 - 元数据更新:构建时可能触发repo工具更新子仓库的本地提交记录、索引信息,生成构建相关的元文件。
- 专有对象存储:构建流程中提取的专有对象,会被repo工具纳入管理,存储到
.repo的仓库对象库中,直接导致体积增加。
内容的提问来源于stack exchange,提问作者user2669989
相关产品推荐
相关产品推荐

