下载源树
安装 Repo
Repo 是一个更容易用 Git 工作在 Android 方面的工具,更多信息关于 Repo,看版本控制。
安装,初始化,和配置 Repo,跟着这些步骤:
-
确保你有一个 bin/ 目录在你的 home 目录,并且它包括在你的 path(译者注:环境变量):
$ mkdir ~/bin $ PATH=~/bin:$PATH
-
下载 Repo 脚本和确保他是可执行的:
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo $ chmod a+x ~/bin/repo
-
对于版本 1.17, SHA-1 校验 repo 为 ddd79b6d5a7807e911b524cb223bc3544b661c28
初始化一个 Repo 客户端
安装 Repo 之后,建立你的客户端访问 android 源库:
-
创建一个空目录容纳你的工作文件。假如你用 MacOS,这是区分大小写的文件系统,给它任何你喜欢的名字:
$ mkdir WORKING_DIRECTORY $ cd WORKING_DIRECTORY
-
运行
repo init
带来最新版本的 Repo 和所有他的最近 bug 修复。你必须指定一个 URL 为清单,指定包含 Android 源各个库将被防止在你的工作目录的位置。$ repo init -u https://android.googlesource.com/platform/manifest
检出一个不同于 "master" 的分支,指定它用 -b:
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
-
当提示,请配置 Repo 用你的真实名字和电子邮件地址。用 Gerrit 代码审查工具,你将需要一个电子邮件地址,连接到一个注册谷歌注册谷歌账户。确保这是一个活跃的地址,你能收到信息。这里你提供的名字将显示在你的代码归属属性上。
一个成功的初始化再将结束和一个消息状态, Repo 是初始化在你的工作目录。你的客户端目录将现在包含一个 .repo
目录,例如清单将保持在这。
获取文件
下拉文件到你的工作目录从默认清单指定的库,运行
$ repo sync
Android 源文件将被防止到你的工作目录按照他们呢的工程名。初始化同步操作将花费一小时或更多来完成。更多关于 repo sync
和其它 Repo 命令,看版本控制。
用认证
默认,访问 Android 源码是匿名的。为了保护服务器过度使用,每个 IP 地址关联一个配额。
当共享一个 IP 和其他用户(例如,当访问源库从一个 NAT 防火墙以外)配额能出发事件定期使用模式(例如,假如一些用户的同步新客户端从相同的 IP 地址在一个短期)。
在这种情况,它可能用认证账户访问,然后使用一个分开的配额为每个用户,无论 IP 地址。
第一步创建一个密码从密码发生器和保存它在 ~/.netrc
根据这页上的说明。
第二部是强制认证访问用下面的清单 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 客户端遇到连接问题,停留在下载中(通常在“恢复目标”期间)。它是被提交,调整设置 TCP/IP 栈和用非并行命令能改善这个情况。你需要 root 访问修改 TCP 设置:
$ sudo sysctl -w net.ipv4.tcp_window_scaling=0
$ repo sync -j1
用一个本地镜像
当用一些客户端,尤其宽带稀缺的情况,它是更好的创建一个本地镜像,整个服务器内容,和同步客户端从这个镜像(不需要网络访问)。
这些说明假定镜像创建在 /usr/local/aosp/mirror
。第一步创建和同步镜像它自己,用近 10GB 网络带宽和一个类似数量的磁盘空间。注意--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
I保存镜像到一个 LAN 服务器和访问它通过 NFS,SSH 或 Git是可能的,也可能保存它在一个可移动设备和通过设备围绕在用户之间或机器之间。
验证 Git标签
载入下面的公共密匙到你的 GnuPG 键数据库。键是用于签署代表发布的注释标签。
$ gpg --import
复制和粘贴下面的键,然后输入 EOF (Ctrl-D) 结束输入和处理键。
-----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-----
输入键后,你能检验任何标签用
$ git tag -v TAG_NAME
假如你仍然没有设置 ccache,你现在将是一个好的事件处理它。
下面:构建代码
你现在有一个Android 代码库的完全本地拷贝。继续构建....