Windows下成功安装Repo和下载Android源码方法总结

repo是什么?

       官方的定义:Repo是谷歌用python脚本写的调用git的一个脚本,可以实现管理多个git库。

Android的源代码使用Repo 命令行工具来管理多个git仓库,大概有百多个。要想克隆和管理百多个 Git 仓库,不是一件简单的事情。Repo 命令行工具对 Git 部分命令封装,将百多个 Git 库有效的进行组织。

Linux下安装Repo

linux下的Repo安装,稍简单些。

$ curl http://android.git.kernel.org/repo >~/bin/repo

$ chmod a+x ~/bin/repo

$ export PATH=$PATH:~/bin

Windows下Repo安装

repo原本是谷歌搞的一个方便下载AOSP的工具基于git,但由于种种原因不能直接在Windows上使用。但好在有windows版本以用。Repo的Windows版本:

https://github.com/esrlabs/git-repo

链接地址:GitHub - esrlabs/git-repo: repo - The multiple repository tool (also works on MS Windows!)

如果按照网上搜到的方法,安装会遇到不少问题。这里介绍下一个一定能成功的方法。

网上的方法:

一、环境准备:

1.安装Git for Windows,360软件管家里可以直接搜到64位的git for windows。

2.安装Python 2.7,360软件管家里可以直接搜到Python 2.7。

3.配置系统环境变量,Git 和python加入到环境变量。

二、安装Repo:

1.在任意处打开 Git Bash 命令行,注意必须是Git的git bash命令行。

mkdir ~/bin
curl https://raw.githubusercontent.com/esrlabs/git-repo/stable/repo > ~/bin/repo
curl https://raw.githubusercontent.com/esrlabs/git-repo/stable/repo.cmd > ~/bin/repo.cmd
chmod a+rx ~/bin/repo

2.下载Android的AOSP源代码,新建aosp目录,cd aosp进入目录。

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-10.0.0_r25 --repo-url=https://github.com/esrlabs/git-repo.git

3.上一步repo init执行成功后,执行repo sync开始正式下载源代码。

遇到的问题:

 Could not resolve host: raw.githubusercontent.com

这个地址可能被墙了,即使手动改hosts文件也不一定管用。 

一定能够成功的办法

1.打开github上的git-repo仓库,把仓库代码clone或者zip包下载下来。

https://github.com/esrlabs/git-repo

 把repo和repo.cmd复制一份放置在C:\Users\Administrator\bin

注意环境不同可能不一定是这个路径。这个位置是前几步mkdir ~/bin创建的目录。可以在git bash下进入到bin目录通过pwd命令查看路径。

2.在需要下载android源码的aosp目录下,新建个.repo文件夹。在.repo文件夹下再建个repo文件夹。把下载的git-repo仓库内的源码放在repo文件夹下。

Windows下成功安装Repo和下载Android源码方法总结_第1张图片

或者省略这步,直接把下载的 git-repo仓库放到git bash的~/bin下应该也可以。

 3.下载Android 源码。

清华大学开源软件镜像站

https://mirrors.tuna.tsinghua.edu.cn/
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-10.0.0_r25

Windows下成功安装Repo和下载Android源码方法总结_第2张图片 最后, repo sync命令,即开始最终的代码下载。

LineageOS 14.1下载

Lineage OS 系统介绍

大伙还记得 CyanogenMod 吗?给安卓手机刷过机的用户基本都知道 CyanogenMod 的ROM,其实国内很多第三方的ROM都是基于 CyanogenMod 的ROM修改优化的,最近Cyanogen 团队重新以Lineage OS的新项目来出发,继续为众多安卓手机开发完备独居特色的操作系统。

该系统ROM相当的纯净,也就几百兆大小,运行自然也流畅,可以拿一些老旧手机刷机来练练手。对LineageOS刷机感兴趣的可关注论坛,有详细的刷机教程:LineageOS中文论坛 - Powered by Discuz!

LineageOS 14.1基于android7.1。

下载过程:

新建文件夹lineageOS,在lineageOS文件夹内新建.repo文件夹,在.repo文件夹内,拷贝进去repo那个代码仓库。接下来:

repo init -u git://github.com/lineageos/android.git -b cm-14.1
repo sync -c

即可下载。为了加快下载速度,可把 .repo里面的manifests文件夹修改里面的default.xml文件,修改如下,使用国内镜像https://github.com.cnpmjs.org/替换github.com

repo相关知识介绍

.repo/manifests是个被git管理的仓库,这里放的是所有的manifest文件(*.xml)。

因为被git管理,固然有分支,-b可以切换到你想要的分支然后再下载相关的xml文件,当然具体下载那个xml还要看-m参数了,所以如果你仅仅指定-b而没有-m的话,就是下载-b指定分支下的default.xml文件。

如果不指定-b参数,那么会默认使用master分支。

repo sync [project-list]

下载最新本地工作文件,更新成功,这本地文件和repository 中的代码是一样的。 可以指定需要更新的project , 如果不指定任何参数,会同步整个所有的项目。

如果是第一次运行 repo sync , 则这个命令相当于 git clone ,会把 repository 中的所有内容都拷贝到本地。

如果不是第一次运行 repo sync , 则相当于 git remote update ;  git rebase origin/branch .  repo sync 会更新 .repo 下面的文件。

如果在merge 的过程中出现冲突, 这需要手动运行  git  rebase --continue

repo默认会同步git库的所有远程分支的代码,但实际开发过程中,用到的分支是有限的。使用sync的-c参数,可以只下载manifest中设定的分支,这会节省代码下载时间以及本地的磁盘空间。

在repo init的时候,会从远程下载manifests和repo这两个git库。默认情况下这两个git库的地址都是写死在repo这个python脚本里面的。

对于AOSP而言,这两个git库的地址显然是google提供的。 但由于google访问受限的缘故,会导致init时,无法下载manifests和repo。这时候,可以使用init的-u和–repo-url参数,自定义这两个库的地址,辅以–no-repo-verify来绕过代码检查。最后,想要快速下载android的源代码的话,可以试下这个操作。

github的国内访问太慢了,使用国内镜像源吧。记住这个地址github的国内镜像源:

https://github.com.cnpmjs.org/

在本地得到.repo文件夹,进去会看到manifests文件夹,修改里面的default.xml文件 。

把里面的fetch="https://github.com/",review="https://github.com/"替换为:"https://github.com.cnpmjs.org/"

参考

  • git-repo
  • Microsoft Windows Details
  • windows环境下repo下载Android源代码
  • window7下配置下载android源码环境,安装Repo
  • Windows安装repo的真正解决方案_倚竹幽篁-CSDN博客
  • Repo介绍_nwpushuai的博客-CSDN博客_repo
  • Windows 平台repo下载及使用repo下载代码_xidiankk的专栏-CSDN博客_windows 使用repo
  • Windows安装repo的真正解决方案,看完直接跪服_m0_61418377的博客-CSDN博客
  • windows 10 git repo下载Android源码更换为国内源的方法_ok138ok的博客-CSDN博客

你可能感兴趣的:(Android应用开发实战,repo,android,aosp,Android源码,LineageOS)