下载Android源码(Google官方文档翻译)

懒人一个,最讨厌英文文档,可惜中文教程又都残缺不全,只好自己动手翻译一个,第一次翻译,各种错误,翻译不当之处希望大家指出。

原文地址:http://source.android.com/source/downloading.html

Android源码被托管在Git库中,由Google负责维护。这份文档描述了如何下载源码树中明确的代码行。

安装Repo

Repo是一个可以使你更方便地在Android环境中使用Git的小工具。想要了解更多关于Repo的信息,可以看Developing这一节

安装Repo的方法

1、  在你的home目录下创建一个bin/目录,然后把它包含到你的路径中

$ mkdir ~/bin
$ PATH=~/
bin:$PATH

2、  下载Repo工具并确认它可以被执行

$ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

初始化Repo客户端

Repo初始化完毕之后,设置你的客户端去访问Android源码库

1、  创建一个空的目录来保存你的工作文件。如果你使用MacOS,那么这个必须使用一个区分大小写的文件系统。你可以取任何你喜欢的名字:

$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY

2、  运行repo init,获取最近版本的Repo,这个版本的Repo已经修复了最新的Bug。你必须明确给出manifest文件的URL,这个文件具体说明了包含在Android源码中的不同的库将放在你的那个工作目录下

$ repo init -u https://android.googlesource.com/platform/manifest

查看某个分支版本而不是最新版本,使用-b命令说明

$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1

3、  当出现提示时,用你的姓名和邮件地址配置Repo。为了使用Gerrit代码审查工具,你需要一个与注册的Google账户相关联的的邮件地址。确认你输入的是一个可以接收邮件的地址。当你提交代码时,将显示你在这里配置的姓名。

当初始化完成之后,将会有一个提示信息告诉你Repo已经对你的工作目录初始化完毕。你的客户端目录下会包含一个.repo的目录,这个目录用来保存manifest等文件。

下载Android源码

如果按照默认的manifest配置从源码库中下载Android源码,只需要运行

$ repo sync

Android源码文件将会被放置在工作目录中的工程名字下。最初的Sync操作可能会花费一个小时甚至更多时间来完成与那妈的下载。关于repo sync命令以及其他的Repo命令,可以查看Developing一节

使用授权证书

在默认情况下,用户是匿名访问Android源码的。为了保护服务器不被过分使用,每个IP被分配了一定的限额。

当一个IP与其它人共享时(例如通过NAT防火墙访问Android源码),配额限制甚至会被一些正常的行为触发。(比如,如果许多用户在极短的时期内用同一个IP同步新的客户端)

在这种情况下,可能就需要使用授权访问了。采用这种方式,每个用户的限额相互独立,不受IP地址的影响。

第一步,你需要到the password generator创建一个口令,然后按照那个页面上所说的把口令保存在~/.netrc目录下

第二步,通过使用下面的manifest URI使用强制授权访问https://android.googlesource.com/a/platform/manifest。注意把 /a/ 目录放在前面以触发强制授权访问。你可以用下面的命令转换一个存在的客户端使用授权访问:

$ repo init -u https://android.googlesource.com/a/platform/manifest

检修网络问题

当通过代理下载源码时(在公司环境中很普遍),必须明确说明Repo使用的代理

$ export HTTP_PROXY=http://<proxy_user_id>:<proxy_password>@<proxy_server>:<proxy_port>
$ export HTTPS_PROXY=http://<proxy_user_id>:<proxy_password>@<proxy_server>:<proxy_port>

在极少情况下,Linux客户端会遇到连接问题,在下载过程中出现阻塞(比较典型的是在 "Receiving objects"期间)。当TCP/IP栈的配置有问题时会报告阻塞问题,通过使用non-parallel commands可以改进这种状况。你需要root权限来修改TCP设置:

$ sudo sysctl -w net.ipv4.tcp_window_scaling=0
$ repo sync -j1

使用本地镜像

当有数个客户端需要同步,特别是在带宽不足的情况下,更好的选择是创建一个包含服务器全部内容的本地镜像,并且让客户端从镜像中同步(这个不需要网络访问)。下载一个镜像比下载两个客户端更小,然而却包含更多信息。

在下面的介绍中我们假定镜像被创建在 /usr/local/aosp/mirror目录下。首先我们需要创建并同步镜像自身,这个需要大概13GB网络带宽和差不多大小的硬盘空间。注意--mirror 标识,这在创建一个新客户端时必须明确说明:

$ mkdir -p /usr/local/aosp/mirror
$ cd /usr/local/aosp/mirror
$ repo init -u https://android.googlesource.com/mirror/manifest --mirror
$ repo sync

镜像同步完成之后,新的客户端就可以借助镜像创建。一定注意使用绝对路径:

$ mkdir -p /usr/local/aosp/master
$ cd /usr/local/aosp/master
$ repo init -u /usr/local/aosp/mirror/platform/manifest.git
$ repo sync

最后,为了使客户端与服务器同步,镜像需要首先与服务器同步,然后客户端与镜像同步:

$ cd /usr/local/aosp/mirror
$ repo sync
$ cd /usr/local/aosp/master
$ repo sync

可以把镜像保存在局域网服务器上并通过NFS、SSH或Git来访问。也可以把镜像存储到可移动设备上,然后通过可移动设备在两个用户或两台机器上使用。

验证Git标签

把下面的公共密钥加载到你的GnuPG key数据库中。这个key被用来说明这是一个release版本。

$ gpg --import

复制并粘贴下面的key,然后输入EOF结束输入并处理key。

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.2.2(GNU/Linux)

mQGiBEnnWD4RBACt9/h4v9xnnGDou13y3dvOx6/t43LPPIxeJ8eX9WB+8LLuROSV
lFhpHawsVAcFlmi7f7jdSRF+OvtZL9ShPKdLfwBJMNkU66/TZmPewS4m782ndtw7
8tR1cXb197Ob8kOfQB3A9yk2XZ4ei4ZC3i6wVdqHLRxABdncwu5hOF9KXwCgkxMD
u4PVgChaAJzTYJ1EG+UYBIUEAJmfearb0qRAN7dEoff0FeXsEaUA6U90sEoVks0Z
wNj96SA8BL+a1OoEUUfpMhiHyLuQSftxisJxTh+2QclzDviDyaTrkANjdYY7p2cq
/HMdOY7LJlHaqtXmZxXjjtw5Uc2QG8UY8aziU3IE9nTjSwCXeJnuyvoizl9/I1S5
jU5SA/9WwIps4SC84ielIXiGWEqq6i6/sk4I9q1YemZF2XVVKnmI1F4iCMtNKsR4
MGSa1gA8s4iQbsKNWPgp7M3a51JCVCu6l/8zTpA+uUGapw4tWCp4o0dpIvDPBEa9
b/aF/ygcR8mh5hgUfpF9IpXdknOsbKCvM9lSSfRciETykZc4wrRCVGhlIEFuZHJv
aWQgT3BlbiBTb3VyY2UgUHJvamVjdCA8aW5pdGlhbC1jb250cmlidXRpb25AYW5k
cm9pZC5jb20+iGAEExECACAFAknnWD4CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIX
gAAKCRDorT+BmrEOeNr+AJ42Xy6tEW7r3KzrJxnRX8mij9z8tgCdFfQYiHpYngkI
2t09Ed+9Bm4gmEO5Ag0ESedYRBAIAKVW1JcMBWvV/0Bo9WiByJ9WJ5swMN36/vAl
QN4mWRhfzDOk/Rosdb0csAO/l8Kz0gKQPOfObtyYjvI8JMC3rmi+LIvSUT9806Up
hisyEmmHv6U8gUb/xHLIanXGxwhYzjgeuAXVCsv+EvoPIHbY4L/KvP5x+oCJIDbk
C2b1TvVk9PryzmE4BPIQL/NtgR1oLWm/uWR9zRUFtBnE411aMAN3qnAHBBMZzKMX
LWBGWE0znfRrnczI5p49i2YZJAjyX1P2WzmScK49CV82dzLo71MnrF6fj+Udtb5+
OgTg7Cow+8PRaTkJEW5Y2JIZpnRUq0CYxAmHYX79EMKHDSThf/8AAwUIAJPWsB/M
pK+KMs/s3r6nJrnYLTfdZhtmQXimpoDMJg1zxmL8UfNUKiQZ6esoAWtDgpqt7Y7s
KZ8laHRARonte394hidZzM5nb6hQvpPjt2OlPRsyqVxw4c/KsjADtAuKW9/d8phb
N8bTyOJo856qg4oOEzKG9eeF7oaZTYBy33BTL0408sEBxiMior6b8LrZrAhkqDjA
vUXRwm/fFKgpsOysxC6xi553CxBUCH2omNV6Ka1LNMwzSp9ILz8jEGqmUtkBszwo
G1S8fXgE0Lq3cdDM/GJ4QXP/p6LiwNF99faDMTV3+2SAOGvytOX6KjKVzKOSsfJQ
hN0DlsIw8hqJc0WISQQYEQIACQUCSedYRAIbDAAKCRDorT+BmrEOeCUOAJ9qmR0l
EXzeoxcdoafxqf6gZlJZlACgkWF7wi2YLW3Oa+jv2QSTlrx4KLM=
=Wi5D
-----END PGP PUBLIC KEY BLOCK-----

导入key之后,你可以通过下面的命令验证任何标签:

$ git tag -v TAG_NAME


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值