Как правильно запустить синхронизацию репо после разветвления манифеста AOSP?

Недавно я решил погрузиться в мир Android Open Source Project. Вот как я представляю свою жизнь с AOSP:

Чтобы покопаться в мире AOSP, мне нужно запачкать руки и изменить код в проектах. И я собираюсь сделать это на трех разных компьютерах, поэтому мне нужно хранить свою работу в удаленных репозиториях git. Поэтому мне нужно разветвить манифест AOSP в моей собственной учетной записи github и работать с ним.

Скажем, позже я попытаюсь поиграть с проектом фреймворков, тогда мне также нужно разветвить этот проект на мою собственную учетную запись github:

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

В идеале, когда я выполняю локальную синхронизацию репо, проект frameworks/base будет извлекаться из моей собственной учетной записи github, а все остальные проекты будут извлекаться из репозитория google git.

Вот что я сделал в действии:

Что я хочу сделать, так это разветвить репозиторий манифеста AOSP git на мой github и работать оттуда. Затем я делаю:

repo sync -u [email protected]: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 [email protected] for help

Похоже, репо предполагает, что проекты будут исходить из той же базы, что и проект манифеста. Я не уверен, как правильно выполнить синхронизацию репо с разветвленным манифестом.

Кроме того, я не уверен, что способ, которым я пытался начать работу над AOSP, был глупым или непрофессиональным. Если это так, я буду признателен, если вы можете указать мне правильный способ сделать это. Заранее спасибо.


person darklord    schedule 04.04.2016    source источник


Ответы (1)


На самом деле я нашел здесь этот пост, который почти полностью ответил на мой вопрос: https://www.primianotucci.com/blog/fork-android-on-github.

Причина, по которой я не могу выполнить синхронизацию репо, заключается в этой строке в файле репо:

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

Две точки означают получение проектов относительно самого проекта манифеста репо. Вот почему репо пытается синхронизироваться с my_own_github_account

Затем я изменил его на

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

Тогда синхронизация репо работает правильно.

Что делать, если для определенного проекта я хочу выполнить синхронизацию со своей учетной записью 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, репо будет получать фреймворк/базу из вашей собственной учетной записи github и получать другие проекты из источника Google.

person darklord    schedule 04.04.2016