阅览android源码,除了运用源码网站 Android Code search

之外,还能够将源码下载到本地方便搜索查看,下面讲一讲下载过程。

主要过程

怎样运用repo 下载Android 体系源码

首先需求下载repo东西。reop是以Git为基础构建的代码库管理东西,repo不是要取代git,而是为了在android环境中更轻松的运用git。

下载repo完结后,运用repo init来初始化文件夹,确定要下载的代码分支等信息。最后运用repo sync指令同步代码。

1. 下载repo

履行一下指令,下载repo东西,并确保它可履行

curl storage.googleapis.com/git-repo-do… > ~/bin/repo

chmod a+x ~/bin/repo

下载的这个repo实际是一段可履行的 Python 脚本,能够将其放在途径中的任何位置。运用文本文件翻开repo能够看到里面的脚本。

2. 初始化repo客户端

这一步主要是做一些必要的初始化,确定要下载的源代码分支。

创立源码文件夹

下载的源码放在哪里?需求一个文件夹。

创立一个预备寄存体系源码的文件夹

mkdir androidsyscode

cd androidsyscode

装备git

运用真实名字和电子邮件地址装备 Git。要运用 Gerrit 代码审核东西,需求一个与已注册的 Google 帐号关联的电子邮件地址。确保这是能够接收邮件的有用地址。在此处供给的名字将显现在提交的代码的供给方信息中。

git config –global user.name “Your Name”

git config –global user.email “you@example.com

履行repo init

进入创好的文件夹中(如上面的androidsyscode)

这个过程意图做一些初始化作业,并确定要下载的源码的分支。

init 后边需求指定一个清单网址,这个网址用于指定 Android 源代码中包含的各个代码库将坐落作业目录中的什么位置

履行指令

repo init -u android.googlesource.com/platform/ma…

表明要拉取的是master分支代码。

假如要其他分支的代码要在后边加上-b和分支称号,如:

repo init -u android.googlesource.com/platform/ma… -b android-4.0.1_r1

其间-u 代表:指定一个url,从这个url中获取清单代码库。即这个清单代码库中包含了要下载的代码的各种信息。

-b:指定修订版别,即要下载的是后边参数指定的分支库(如android-4.0.1_r1)

这个分支称号android-4.0.1_r1从哪里来?怎样知道要下载是分支称号。事实上经过直接翻开 android.googlesource.com/platform/ma… 网址就能找到,翻开后能够看到里面有很多分支

怎样运用repo 下载Android 体系源码

在这里能够找到你想下载的分支称号。

事实上这个android.googlesource.com/platform/ma… 是个git库。你能够经过:

git clone android.googlesource.com/platform/ma…

将它下载到本地,然后经过git branch -r 等git指令操作能够看都有很多长途分支,这些分支就是你需求的分支称号。和网页翻开看到的一样。

在这个manifest库中,你能找到一切android管理的库,分支等信息。

初始化成功后,作业目录中现在应包含一个 .repo 目录,清单等文件将保存在该目录下。

3. 下载源码 repo sync

履行完结repo init后就能够运用repo sync下载源码了。

这条命名意图是下载需求的代码到本地。

履行以下指令,开端下载:

repo sync

假如在未运用任何参数的状况下运转 repo sync,则该指令会同步一切项意图文件。

运转 repo sync 后,将呈现以下状况:

1)假如方针项目从未同步过,则 repo sync 相当于 git clone。长途代码库中的一切分支都会复制到本地项目目录中。

2)假如方针项目以前同步过,则 repo sync 相当于:

git remote update

git rebase origin/branch

其间 branch 是本地项目目录中当前已检出的分支。假如本地分支没有在跟踪长途代码库中的分支,则项目不会发生任何同步。

经过repo help sync 指令能够了解sync的具体阐明,其间有一些重要选项:

-c:仅获取服务器中的当前清单分支

-f:即便某个项目同步失败,也持续同步其他项目

-jthreadcount:将同步操作拆分红多个线程,以更快地完结。确保不会使计算机超负荷运转为其他任务预留一些 CPU。如需查看可用 CPU 的数量,请先运转:nproc –all

例:-j4 表明拆分红4个线程。

repo sync后边还能够跟可选参数[project-list]

repo sync [project-list]

这个[project-list]表明你想同步的项目列表。默认不填写是一切项目。命名加上这个项目称号,能够加速下载速度,你不需求的项目不会下载

project-list到底写的是什么?能够参阅源码作业目录(即你履行repo init的目录)

下面 .repo/project.list 文件。翻开这文件里面列举的是一切的项目称号。

这些项目称号代表什么,能够查看 .repo/manifests文件夹下的default.xml文件,这个文件描绘了项目途径等信息。

怎样运用repo 下载Android 体系源码
运转repo sync此指令时,时间较久,需求耐性等候,成功完结后即可在本地查看体系源码。

4. mac 体系下载处理

由于Mac的文件体系默认不区别大小写,所以我们需求建一个磁盘映象。这个磁盘映像的意图是将android体系源码下载到这个磁盘映像中。避免因为文件大小写的问题呈现过错。所以在mac体系中我们需求在磁盘映像中建作业目录然后再履行repo init指令。

在体系中找到磁盘东西

怎样运用repo 下载Android 体系源码

翻开文件菜单挑选空白映像

怎样运用repo 下载Android 体系源码

填写磁盘信息

怎样运用repo 下载Android 体系源码

输入磁盘称号,大小和格局。格局要选对,要区别大小写。然后保存即可。

创立好磁盘映像后,即可进入其间,履行repo init指令,以及repo sync指令来下载源码了。

下载的源码会保存在这个磁盘映像中,下次重启电脑还需求重新挂载,不然进不了源码目录。

下面看看怎样挂载

挂载磁盘

挂载磁盘能够运用指令:

hdiutil attach ~/AndroidDisk.dmg -mountpoint /Volumes/android

即把方才生成的映像文件,如AndroidDisk.dmg挂载到目录/Volumes/android

Google的官网上推荐把这行加到~/.bash_profile里,这样今后每次用mountAndroid指令就行了。

mount the android file image function mountAndroid { hdiutil attach ~/AndroidDisk.dmg -mountpoint /Volumes/android; }

(记住途径和文件名的正确书写)

今后每次在指令行输入:mountAndroid 就挂载了之前生成的映像了

5. repo 阐明

repo 具体阐明能够参阅官方文档:

Repo 指令参阅资料

假如对某个repo 指令不了解,能够履行指令:

repo help command

如,repo help sync

这个help指令输出对应指令的具体阐明

6. 遇到的坑

履行repo 时遇到了一个过错:

env: python: No such file or directory

检查体系确实安装了python,可是安装的python3。于是翻开repo文件,发现头部显现的是

#!/usr/bin/env python

将其改为

#!/usr/bin/env python3

并保存,问题解决。

repo指令实际上就是个python脚本文件,所以能够运用任何文本东西翻开修改。。

怎样运用repo 下载Android 体系源码

参阅:

source.android.com/source/down…

source.android.com/docs/setup/…

www.jianshu.com/p/b8da94ad1…