Android系统基础(03) Android系统源码下载

该系列文章总纲链接:专题分纲目录 Android系统基础


常规官方网站说明:

  1. Android 源码官方网站为(google你懂的)https://source.android.com
  2. 官网参考链接,对应的tag(tag是一种标签,我们可以根据tag来判断下载的代码具体是哪一个版本。)相关的页面链接为(8.0版本tag后者更全面):android TAG页面映射表

1 安装repo 与初始化repo客户端

Repo 是一款工具,可让在 Android 环境中更轻松地使用 Git,可以理解为git的封装。要安装 Repo,请执行以下操作:

确保主目录下有一个 bin/ 目录,并且该目录包含在路径中:

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

下载 Repo 工具,并确保它可执行:

curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
  • 对于 1.21 版,Repo 的 SHA-1 校验和为 b8bd1804f432ecf1bab730949c82b93b0fc5fede
  • 对于 1.22 版,Repo 的 SHA-1 校验和为 da0514e484f74648a890c0467d61ca415379f791
  • 对于 1.23 版,Repo 的 SHA-256 校验和为 e147f0392686c40cfd7d5e6f332c6ee74c4eab4d24e2694b3b0a0c037bf51dc5

安装 Repo 后,设置 客户端以访问 Android 源代码代码库:创建一个空目录来存放您的工作文件。如果是 MacOS,必须在区分大小写的文件系统中创建该目录。为其指定一个喜欢的任意名称:

mkdir WORKING_DIRECTORY;cd WORKING_DIRECTORY

使用 用户名和 电子邮件 来 配置 Git。配置方式如下所示:

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

运行 repo init 以获取最新版本的 Repo 及其最近的所有错误更正内容。您必须为清单指定一个网址,该网址用于指定 Android 源代码中包含的各个代码库将位于工作目录中的什么位置(针对msater分支)。

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

这里注意:国内中科大的镜像相对比较稳定:AOSP(Android) 镜像使用帮助 - LUG @ USTC,参考此文档更适合在国内下载AOSP的Mirror。

要对“master”以外的分支进行校验,请使用 -b 来指定相应分支。要查看分支列表,请参阅源代码标记和版本。类似如下所示:

repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
repo init -u https://android.googlesource.com/platform/manifest -b android-4.4_r1.2
repo init -u https://android.googlesource.com/platform/manifest -b android-7.1.2_r33
repo init -u https://android.googlesource.com/platform/manifest -b android-8.0.0_r17

对应的硬件包链接:android 硬件对应pkg qualcomm google

初始化成功后,系统将显示一条消息,告诉您 Repo 已在工作目录中完成初始化。客户端目录中现在应包含一个 .repo 目录,清单等文件将保存在该目录下。

2 下载android源码树

2.1 同步代码

要将 Android 源代码树从默认清单中指定的代码库下载到工作目录,运行以下命令:

repo sync

Android 源代码文件将位于工作目录中对应的项目名称下。初始同步操作将需要 1 个小时或更长时间才能完成。

2.2 使用身份验证

默认情况下,访问 Android 源代码均为匿名操作。为了防止服务器被过度使用,每个 IP 地址都有一个相关联的配额。当与其他用户共用一个 IP 地址时(例如,在越过 NAT 防火墙访问源代码代码库时),系统甚至会针对常规使用模式(例如,许多用户在短时间内从同一个 IP 地址同步新客户端)触发配额。在这种情况下,可以使用进行身份验证的访问方式,此类访问方式会对每位用户使用单独的配额,而不考虑 IP 地址。操作步骤如下所示:

  1. 使用密码生成器生成密码,然后按照密码生成器页面中的说明进行操作。
  2. 通过使用以下清单 URI,强制使用进行身份验证的访问方式:https://android.googlesource.com/a/platform/manifest。请注意 /a/ 目录前缀如何触发强制性身份验证。可以通过以下命令将现有客户端转换为使用强制性身份验证:
repo init -u https://android.googlesource.com/a/platform/manifest

2.3 排查网络问题

在使用代理的情况下下载内容(在一些企业环境中很常见)时,您可能需要明确指定 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

2.4 使用本地镜像

当使用多个客户端时(尤其是在带宽不足),最好为所有服务器内容创建一个本地镜像,并从该镜像同步客户端(不需要访问网络)。一个完整镜像的下载文件比两个客户端的下载文件要小一些。以下说明假定在在/usr/local/aosp/mirror 中创建镜像。第一步是创建并同步镜像本身。请注意 --mirror 标志,该标志只能在创建新客户端时指定:

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

最后,要将客户端与服务器同步,您需要将镜像与服务器同步,然后再将客户端与镜像同步:

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

您可以将镜像存储在 LAN 服务器上,然后通过 NFS、SSH 或 Git 访问它。您还可以将其存储在移动存储盘上,并在用户之间或计算机之间传用该存储盘。

2.5 验证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

1 Android PDF 阅读器源码 2 Android Txt文本阅读器源码 3 Android SqliteManager 源码 4 Android 个人记账程序源码 5 android 多点触控实例源码 6 android 画图程序 7 Android 手电筒源码 8 Android 天气预报加widget源码、 9 Android 条码扫描程序源码 10 Android 一个批量删除联系人的Demo 11 Android 指南针程序 12 Android操作数据库实例 13 android连接SQLite数据库-----增加改查+分页 14 Android游戏的心跳效果 15 Android远程登录含有loading登录效果~~完整代码和超级详细注释 16 AsyncTask进度条加载网站数据到ListView 17 EditText插入QQ表情源码 18 OpenGL的一个简单的例子 19闹钟 20 指南针 21 重力感应 22 android 查询工具源代码 23 android进度条对话框Demo 24 Android实现渐显按钮的左右滑动效果 25 android天气预报源码 26 Android 文件浏览器源码 27 android源码分享之私密通讯录源码 28 Android自定义泡泡效果 源码 29 android 获取Gps信息的程序源码 30 android 超炫的图片浏览器 31 android 加载时闪烁点样式的启动画面 32 基于 Android 的英文电子词典 33 android 源码之英语单词记忆程序源码 34 andorid 源码北京公交线路查询(离线) 35 Android 计算器源码 36 带文字的ProgressBar Demo源码 37 android自定义时钟(三种方法实现,秒针效果,详细注解) 38 Android 秒表源码分享 39 Android源代码定时情景模式切换 40 android源码分享之带手势划动功能的日历源码
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图王大胜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值