之外,还可以将源码下载到本地方便搜索查看,下面讲一讲下载步骤。
首先需要下载repo工具。reop是以Git为基础构建的代码库管理工具,repo不是要取代git,而是为了在android环境中更轻松的使用git。
下载repo完成后,使用repoinit来初始化文件夹,确定要下载的代码分支等信息。最后使用reposync命令同步代码。
执行一下命令,下载repo工具,并确保它可执行
chmoda+x~/bin/repo
下载的这个repo实际是一段可执行的Python脚本,可以将其放在路径中的任何位置。使用文本文件打开repo可以看到里面的脚本。
这一步主要是做一些必要的初始化,确定要下载的源代码分支。
下载的源码放在哪里?需要一个文件夹。
创建一个准备存放系统源码的文件夹
mkdirandroidsyscode
cdandroidsyscode
使用真实姓名和电子邮件地址配置Git。要使用Gerrit代码审核工具,需要一个与已注册的Google帐号关联的电子邮件地址。确保这是可以接收邮件的有效地址。在此处提供的姓名将显示在提交的代码的提供方信息中。
gitconfig--globaluser.name"YourName"
进入创好的文件夹中(如上面的androidsyscode)
这个步骤目的做一些初始化工作,并确定要下载的源码的分支。
init后面需要指定一个清单网址,这个网址用于指定Android源代码中包含的各个代码库将位于工作目录中的什么位置
执行命令
表示要拉取的是master分支代码。
如果要其他分支的代码要在后面加上-b和分支名称,如:
其中-u代表:指定一个url,从这个url中获取清单代码库。即这个清单代码库中包含了要下载的代码的各种信息。
-b:指定修订版本,即要下载的是后面参数指定的分支库(如android-4.0.1_r1)
在这里可以找到你想下载的分支名称。
将它下载到本地,然后通过gitbranch-r等git命令操作可以看都有很多远程分支,这些分支就是你需要的分支名称。和网页打开看到的一样。
在这个manifest库中,你能找到所有android管理的库,分支等信息。
初始化成功后,工作目录中现在应包含一个.repo目录,清单等文件将保存在该目录下。
执行完成repoinit后就可以使用reposync下载源码了。
这条命名目的是下载需要的代码到本地。
执行以下命令,开始下载:
reposync
如果在未使用任何参数的情况下运行reposync,则该命令会同步所有项目的文件。
运行reposync后,将出现以下情况:
1)如果目标项目从未同步过,则reposync相当于gitclone。远程代码库中的所有分支都会复制到本地项目目录中。
2)如果目标项目以前同步过,则reposync相当于:
gitremoteupdate
gitrebaseorigin/branch
其中branch是本地项目目录中当前已检出的分支。如果本地分支没有在跟踪远程代码库中的分支,则项目不会发生任何同步。
通过repohelpsync命令可以了解sync的详细说明,其中有一些重要选项:
-c:仅获取服务器中的当前清单分支
-f:即使某个项目同步失败,也继续同步其他项目
-jthreadcount:将同步操作拆分成多个线程,以更快地完成。确保不会使计算机超负荷运行为其他任务预留一些CPU。如需查看可用CPU的数量,请先运行:nproc--all
例:-j4表示拆分成4个线程。
reposync后面还可以跟可选参数[project-list]
reposync[project-list]
这个[project-list]表示你想同步的项目列表。默认不填写是所有项目。命名加上这个项目名称,可以加快下载速度,你不需要的项目不会下载
project-list到底写的是什么?可以参考源码工作目录(即你执行repoinit的目录)
下面.repo/project.list文件。打开这文件里面列举的是所有的项目名称。
这些项目名称代表什么,可以查看.repo/manifests文件夹下的default.xml文件,这个文件描述了项目路径等信息。
由于Mac的文件系统默认不区分大小写,所以我们需要建一个磁盘映象。这个磁盘映像的目的是将android系统源码下载到这个磁盘映像中。防止因为文件大小写的问题出现错误。所以在mac系统中我们需要在磁盘映像中建工作目录然后再执行repoinit命令。
输入磁盘名称,大小和格式。格式要选对,要区分大小写。然后保存即可。
创建好磁盘映像后,即可进入其中,执行repoinit命令,以及reposync命令来下载源码了。
下载的源码会保存在这个磁盘映像中,下次重启电脑还需要重新挂载,否则进不了源码目录。
下面看看如何挂载
挂载磁盘可以使用命令:
hdiutilattach~/AndroidDisk.dmg-mountpoint/Volumes/android
即把刚才生成的映像文件,如AndroidDisk.dmg挂载到目录/Volumes/android
Google的官网上推荐把这行加到~/.bash_profile里,这样以后每次用mountAndroid命令就行了。
mounttheandroidfileimagefunctionmountAndroid{hdiutilattach~/AndroidDisk.dmg-mountpoint/Volumes/android;}
(记住路径和文件名的正确书写)
以后每次在命令行输入:mountAndroid就挂载了之前生成的映像了
repo详细说明可以参考官方文档:
如果对某个repo命令不了解,可以执行命令:
repohelpcommand
如,repohelpsync
这个help命令输出对应命令的详细说明
执行repo时遇到了一个错误:
env:python:Nosuchfileordirectory
检查系统确实安装了python,但是安装的python3。于是打开repo文件,发现头部显示的是
#!/usr/bin/envpython
将其改为
#!/usr/bin/envpython3
并保存,问题解决。
repo命令实际上就是个python脚本文件,所以可以使用任何文本工具打开修改。。