1. 安装git 并设置邮件和用户名

sudo apt-get install git
git config --global user.email qin159358883@qq.com
git config --global user.name "hengdi"

可能出现的异常:
无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend),是否有其他进程正占用它
image.png(https://note.youdao.com/yws/r...)
原因在于安装软件时没有完成便强行关闭了
直接强制解锁

sudo rm /var/lib/dpkg/lock-frontend
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock

将~/bin加入到系统启动中,方便接下来使用repo

echo "PATH=~/bin:\$PATH" >> ~/.bashrc
# 刷新bash 
source ~/.bashrc

2. 安装curl

sudo apt-get install curl

3. 安装 repo

curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
## 如果上述 URL 不可访问,可以用国内的:
# 清华
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
# 中科大
curl -sSL  'https://gerrit-googlesource.proxy.ustclug.org/git-repo/+/master/repo?format=TEXT' |base64 -d > ~/bin/repo

##### 给repo增加执行权限
chmod a+x ~/bin/repo

创建REPO_URL 这个变量


# 谷歌(优先用这个)
export REPO_URL='https://gerrit-googlesource.proxy.ustclug.org/git-repo'

# 清华
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
# cat ~/bin/repo 在其中会发现调用这个变量,如果这个变量不存在,则会使用google的git链接  速度很慢

4. 修改 python 软连接

后续过程需要用到python,因此修改软连接

sudo ln -s /usr/bin/python3.8 /usr/bin/python

5. 初始化仓库:

# 来到 repo所在文件夹
cd ~/bin/aosp

# 清华
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-10.0.0_r17
# 中科大
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-10.0.0_r17
  • 报错情况一:

    fatal: 无法访问 'https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest/':server certificate verification failed. CAfile: none CRLfile: none
    manifests: sleeping 4.0 seconds before retrying
    fatal: 无法访问 'https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest/':server certificate verification failed. CAfile: none CRLfile: none
    fatal: cannot obtain manifest https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest

解决方案:

git config --global http.sslverify false
git config --global https.sslverify false
  • 报错情况二:

    Traceback (most recent call last):
    File "/root/bin/aosp/.repo/repo/main.py", line 651, in <module>
      _Main(sys.argv[1:])
    File "/root/bin/aosp/.repo/repo/main.py", line 627, in _Main
      result = run()
    File "/root/bin/aosp/.repo/repo/main.py", line 620, in <lambda>
      run = lambda: repo._Run(name, gopts, argv) or 0
    File "/root/bin/aosp/.repo/repo/main.py", line 286, in _Run
      result = cmd.Execute(copts, cargs)
    File "/root/bin/aosp/.repo/repo/subcmds/init.py", line 547, in Execute
      self._SyncManifest(opt)
    File "/root/bin/aosp/.repo/repo/subcmds/init.py", line 332, in _SyncManifest
      m.MetaBranchSwitch(submodules=opt.submodules)
    File "/root/bin/aosp/.repo/repo/project.py", line 3310, in MetaBranchSwitch
      self.Sync_LocalHalf(syncbuf, submodules=submodules)
    File "/root/bin/aosp/.repo/repo/project.py", line 1302, in Sync_LocalHalf
      lost = self._revlist(not_rev(revid), HEAD)
    File "/root/bin/aosp/.repo/repo/project.py", line 2875, in _revlist
      return self.work_git.rev_list(*a, **kw)
    File "/root/bin/aosp/.repo/repo/project.py", line 3088, in rev_list
      raise GitError('%s rev-list %s: %s' %
    error.GitError: manifests rev-list ('^4531c2f30a224a7782a4dd245f5d90ce84e2941d', 'HEAD', '--'): fatal: unsafe repository ('/root/bin/aosp/.repo/manifests' is owned by someone else)
    To add an exception for this directory, call:
    
      git config --global --add safe.directory /root/bin/aosp/.repo/manifests
    

    解决方案:

    # 正如报错中的提示信息,
    # 先执行如下命令
    git config --global --add safe.directory /root/bin/aosp/.repo/manifests
    
    重新执行inti和sync

    6. 同步

    然后进去解压好的aosp 文件夹 开始同步

    cd ~/bin/aosp
    repo sync

    repo sync的时候有可能会遇到的问题

    info: A new version of repo is available
    repo: Updating release signing keys to keyset ver 2.3
    warning: repo is not tracking a remote branch, so it will not receive updates
    repo reset: error: Entry '.github/workflows/test-ci.yml' not uptodate. Cannot merge.
    fatal: 不能重置索引文件至版本 'v2.16^0'。

解决方案:

cd ~/bin/aosp/.repo/repo
git pull
cd ~/bin/aosp
再次 repo init:
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-10.0.0_r17
repo sync

永乐
23 声望7 粉丝

目前文章属于笔记类型,暂未整理。 后期会系统化整理。