repo 下载Android源码(国内镜像)

  1. 下载repo
    网上给的repo大多是国外的网址,考虑到墙的存在,给不少同学增加了一定的困难,这次我就将repo放在七牛云存储上面供大家下载,下载地址repo
  2. 将repo添加进环境变量
    下载后将repo复制到/usr/bin目录下,之所以复制到这个目录是因为这个目录本身就在系统环境变量里面,这样的话就省去了配置repo环境变量的问题,接着给普通用户赋对这个文件的执行权限
chmod a+x /usr/bin/repo
  1. 测试repo是否安装成功
    接着在其它非系统环境变量目录执行repo命令,看是否有这样的输出
error: repo is not installed.  Use "repo init" to install it here.

如果有这样的输出就代表repo安装成功。

  1. 修改repo
    将repo加进系统环境变量之后还要修改一下文件的一下内容,因为默认的repo文件的下载源是googlesource.com,然而这个网址是在墙外的无法访问,因此我们就要把下载源代码的地址改为国内的,国内的下载Android 源码的镜像有很多,常见的有 tsinghua/omap/,这里我们使用清华的,因为清华就在笔者附近从网络链接速度来说都相当快。
    修改repo文件众的REPO_URL 为
REPO_URL = 'https://aosp.tuna.tsinghua.edu.cn/git-repo'

由于是repo在/usr/bin目录下因此在编辑repo文件的时候要在前面加上sudo

sudo vim /usr/bin/repo

这是我修改好的repo文件大家可以直接使用,在使用前记得重命名成repo就可以了,repo_tsinghua下载地址

  1. 下载源码
    接着开始下载Android 源码,这里我在自己的家目录创建了一个Android_Source 文件夹来存储Android源码。执行下列命令来初始化仓库
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-5.1.1_r3

初始化仓库后,会在Androi_Source 目录下创建一个.repo的隐藏目录,进入这个目录下会发现几个文件。其中最重要的是manifest.xml,这个文件是个链接文件,这个链接指向manifets目录下的default.xml,这个清单文件描述了Android 源代码下所有的project,从底层到应用层,但凡是Android 系统众用到的这里面都有,比如我们知道的在Android原生系统众的联系人应用在这个文件中对应着这两个project

<project path="packages/apps/Contacts" name="platform/packages/apps/Contacts" />   
<project path="packages/apps/ContactsCommon" name="platform/packages/apps/ContactsCommon" />

接着在Android_Source目录里下执行下列命令,就开始从清华镜像下载Android源码,我在实际下载过程中出现过网络情况不太好的时候,这时候下载会中断,这时重新执行改命令就可以了。repo会检测之前下载好的是否完成,然后接着从上一次中断处开始下载。就这样就基本上完成了Andorid源码的下载,下载完成后大概31G左右,如果不到31G的基本上就是没下载完,重新执行该命令即可。

repo sync

查询下载完成后的文件大小:

android原生31镜像 android系统源码国内镜像_Android


那到底什么时候是下载完成的状态呢,下载完成后会有这样的提示:

Fetching projects: 100% (486/486), done.

图例:

android原生31镜像 android系统源码国内镜像_android原生31镜像_02


PS. 有的同学在执行repo init命令的时候可能会出现这样的提示:

error.GitError: manifests var: 
*** Please tell me who you are.

Run

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

这个提示已经很明显了,大概意思就是git不知道你是谁,需要执行下这两个命令告诉git就可以了。

git config --global user.email "you@example.com"
git config --global user.name "Your Name"