Windows下安装repo

0 篇文章 0 订阅

1、安装windows版本的python3

安装Python 3 ,目前版本是3.8.2,不要安装Python 2
注意:安装完成后,记得在命令行测试一下,如果命令不可用,记得配置一下path环境变量

2、安装windos版本git

安装最新的Git for Windows ,目前版本是2.26.2,Python 3在安装的时候勾选Add path那项就能自动配置
注意:安装完成后,记得在命令行测试一下,如果命令不可用,记得配置一下path环境变量

3、安装repo

参阅1

右键桌面打开 Git Bash Here

mkdir ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+rx ~/bin/repo //如果下载下来的repo直接具有rx权限,这步可以不用做

安装完成可以测试一下repo命令

4、下载源码

# 先随便新建源码目录
mkdir -p ~/AOSP/.repo
cd ~/AOSP/.repo
# clone工具集
git clone https://gerrit.googlesource.com/git-repo
# 一定要改文件夹名
mv git-repo repo
# 回到AOSP源码目录
cd ..
# 保证你成功
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-10.0.0_r25 --worktree //这里的url可以是http协议url也可以是ssh协议url

repo init 命令说明

  • -b指定manifests分支,这样就可以随意创建不同的manifests了

以上输入repo init时,如果报错

$ repo init -u url
error: in `init -u url`: Unable to create symbolic link. Please re-run the command as Administrator, or see https://github.com/git-for-windows/git/wiki/Symbolic-Links for other options.

记得以管理员权限启动git bash

5、制作manifests仓库

在需要管理的代码仓库下,新建manifests仓库,并新增default.xml文件
default.xml格式如下:

<?xml version="1.0" encoding="UTF-8"?>
<manifest>

  <remote  name="origin"
           fetch=".."
           review="https://android-review.googlesource.com/" />
  <default revision="master"
           remote="origin"
           sync-j="4" />

  <project path="itoken" name="itoken" revision="dev"/>
</manifest>

Manifest元素

参阅2

最顶层的XML元素。

remote元素

设置远程git服务器的属性,包括下面的属性:

  • name: 远程git服务器的名字,直接用于git fetch, git remote 等操作
  • alias: 远程git服务器的别名,如果指定了,则会覆盖name的设定。在一个manifest中, name不能重名,但alias可以重名。
  • fetch: 所有projects的git URL 前缀
  • review: 指定Gerrit的服务器名,用于repo upload操作。如果没有指定,则repo upload没有效果。

一个manifest文件中可以配置多个remote元素,用于配置不同的project默认下载指向。

default元素

设定所有projects的默认属性值,如果在project元素里没有指定一个属性,则使用default元素的属性值。

  • remote: 之前定义的某一个remote元素中name属性值,用于指定使用哪一个远程git服务器。
  • revision: git分支的名字,例如master或者refs/heads/master
  • sync_j: 在repo sync中默认并行的数目。
  • sync_c: 如果设置为true,则只同步指定的分支(revision 属性指定),而不是所有的ref内容。
  • sync_s: 如果设置为true,则会同步git的子项目

Example:

<default remote="main" revision="platform/main"/>

project元素

指定一个需要clone的git仓库。

  • name: 唯一的名字标识project,同时也用于生成git仓库的URL。格式如下:
    r e m o t e f e t c h / {remote_fetch}/ remotefetch/{project_name}.git
  • path: 可选的路径。指定git clone出来的代码存放在本地的子目录。如果没有指定,则以name作为子目录名。
  • remote: 指定之前在某个remote元素中的name。
  • revision: 指定需要获取的git提交点,可以是master, refs/heads/master, tag或者SHA-1值。如果不设置的话,默认下载当前project,当前分支上的最新代码。
  • groups: 列出project所属的组,以空格或者逗号分隔多个组名。所有的project都自动属于"all"组。每一个project自动属于name:‘name’ 和path:'path’组。
    例如,它自动属于default, name:monkeys, and path:barrel-of组。如果一个project属于notdefault组,则,repo sync时不会下载。
  • sync_c: 如果设置为true,则只同步指定的分支(revision 属性指定),而不是所有的ref内容。
  • sync_s: 如果设置为true,则会同步git的子项目。
  • upstream: 在哪个git分支可以找到一个SHA1。用于同步revision锁定的manifest(-c 模式)。该模式可以避免同步整个ref空间。
  • annotation: 可以有多个annotation,格式为name-value pair。在repo forall 命令中这些值会导入到环境变量中。
  • remove-project: 从内部的manifest表中删除指定的project。经常用于本地的manifest文件,用户可以替换一个project的定义。
  • 子元素
Project元素下面会有两个子元素。Copyfile和linkfile
        <copyfile src="core/root.mk" dest="Makefile" />
        <linkfile src="root.bp" dest="Android.bp" />
            Copefile:复制,cp src dest
            Linkfile:软链接 ,ln -s src dest
    Example:
    <project groups="aosp" path="device/driver/armv7" revision="600aab270ce712b62b268055737cabcded59bf04"/>

Include元素

通过name属性可以引入另外一个manifest文件(路径相对与manifest repository’s root)。


  1. https://blog.csdn.net/ysy950803/article/details/104188793 ↩︎

  2. https://blog.csdn.net/weixin_33695082/article/details/92988691 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值