如何在分叉AOSP清单后正确运行repo sync?

6

最近,我决定深入研究Android开源项目世界。以下是我对AOSP的预期:

为了深入了解AOSP,我需要动手修改项目中的代码。而且我会在三台不同的计算机上进行操作,因此我需要将我的工作存储在远程git仓库中。所以我需要在自己的github账户中fork AOSP清单,并从那里开始工作。

比如说,如果我想尝试使用框架项目,那么我也需要将该项目fork到自己的github账户中:

<project path="frameworks/base" name="platform/frameworks/base" groups="pdk-cw-fs,pdk-fs" />

理想情况下,当我进行本地仓库同步时,框架/基础项目将从我的Github帐户中获取,而所有其他项目将从Google Git存储库获取。

以下是我的具体操作:

我想要做的是将AOSP清单Git存储库分叉到我的Github中,并从那里开始工作。然后我会执行以下操作:

repo sync -u git@github.com:my_own_github_account/platform_manifest.git

然后我执行:

repo sync

然而,我在控制台中收到了很多错误,例如:
fatal: remote error: 
  my_own_github_account/platform/external/libopus is not a valid repository name
  Email support@github.com for help

似乎 repo 会认为项目与清单项目来自相同的基础。我不确定如何使用 forked manifest 正确地进行 repo 同步。
另外,我不确定我开始 AOSP 的方式是否愚蠢或不专业。如果是这样,如果您可以指出正确的做法,我将不胜感激。谢谢。
1个回答

7

实际上,我在这里找到的帖子几乎完美地回答了我的问题:https://www.primianotucci.com/blog/fork-android-on-github

我无法进行 repo sync 的原因是因为在 repo 文件中有这行代码:

<remote  name="aosp"
           fetch=".."
           review="https://android-review.googlesource.com/" />

两个点表示相对于仓库清单项目本身获取项目。这就是为什么repo试图从我的_own_github_account同步的原因。

然后我将其更改为

  <remote  name="aosp"
           fetch="https://android.googlesource.com" />

然后repo同步就能正常工作了。

如果我想从自己的Github账户同步特定项目怎么办?

当然,你需要将该项目镜像到自己的Github账户上。然后像这样修改清单文件:

在清单文件中添加此行:

 <remote name="origin" fetch="https://github.com/my_own_github_account" />

该名称是您想要为自己的子项目使用的远程提取源。

然后添加以下内容:

<project path="frameworks/base" name="platform/base"
            remote="origin" revision="your_default_revision" />

请注意,如果您想覆盖默认的远程抓取源,则需要添加 remote="origin"
然后,在执行 repo sync 时,repo 将从您自己的 GitHub 帐户获取 framework/base,并从 Google 源中获取其他项目。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接