下载源代码
Android 源代码树位于由 Google 托管的 Git 代码库中。Git 代码库中包含 Android 源代码的元数据,其中包括与对源代码进行的更改以及更改日期相关的元数据。
安装 Repo
Repo 是一款工具,可让您在 Android 环境中更轻松地使用 Git。
要安装 Repo,请执行以下操作:
- 确保主目录下有一个 bin/ 目录,并且该目录包含在路径中:
[root@localhost frank]# mkdir ~/bin
[root@localhost frank]# PATH=~/bin:$PATH
2.下载 Repo 工具,并确保它可执行:
[root@localhost frank]# curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
[root@localhost frank]# cd ~/bin
[root@localhost bin]# ls
repo
对于 1.21 版,Repo 的 SHA-1 校验和为 b8bd1804f432ecf1bab730949c82b93b0fc5fede
对于 1.22 版,Repo 的 SHA-1 校验和为 da0514e484f74648a890c0467d61ca415379f791
对于 1.23 版,Repo 的 SHA-256 校验和为 e147f0392686c40cfd7d5e6f332c6ee74c4eab4d24e2694b3b0a0c037bf51dc5
初始化 Repo和下载源码
安装 Repo 后,设置您的客户端以访问 Android 源代码代码库:
1.新建源码目录
创建一个空目录来存放您的工作文件。如果您使用的是 MacOS,必须在区分大小写的文件系统中创建该目录。为其指定一个您喜欢的任意名称:
[root@localhost frank]# mkdir repo_workspace
[root@localhost frank]# ls
android repo_workspace
[root@localhost frank]# cd repo_workspace/
2.下载源码
运行 repo init 以获取最新版本的 Repo 及其最近的所有错误更正内容。您必须为清单指定一个网址,该网址用于指定 Android 源代码中包含的各个代码库将位于工作目录中的什么位置。
repo init -u https://android.googlesource.com/platform/manifest
上述命令会要求Repo下载最新的Android源代码,也就是master分支,如果想下载其他分支请使用 -b
来指定相应分支.要查看分支列表,请参阅(需要翻墙)源代码标记和版本。
这里我们现在下载android-2.3.5_r1版本
repo init -u https://android.googlesource.com/platform/manifest -b android-2.3.5_r1
上述操作需要翻墙,如果翻不了墙可以使用(请使用google浏览器打开,不同浏览器看到的效果可能不同)清华镜像。
初始化成功后,系统将显示一条消息,告诉您 Repo 已在工作目录中完成初始化。客户端目录中现在应包含一个 .repo 目录,清单等文件将保存在该目录下。
- 同步源码树:
要将 Android 源代码树从默认清单中指定的代码库下载到工作目录,请运行以下命令(以后只需执行这条命令来同步):
[root@localhost android_source]# repo sync
Android 源代码文件将位于工作目录中对应的项目名称下。初始同步操作将需要 1 个小时或更长时间才能完成。
使用镜像安装repo和下载源码
- 使用镜像安装repo
[root@localhost frank]# mkdir ~/bin
[root@localhost frank]# PATH=~/bin:$PATH
[root@localhost frank]# cd ~/bin
[root@localhost bin]# curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo
[root@localhost bin]# chmod +x repo
repo的运行过程中会尝试访问官方的git源更新自己,如果想使用tuna的镜像源进行更新,可以将如下内容复制到你的~/.bashrc里
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
并重启终端模拟器。
- 新建源码目录,下载源码
[root@localhost frank]# mkdir repo_workspace
[root@localhost frank]# ls
android repo_workspace
[root@localhost frank]# cd repo_workspace/
- 下载指定版本源码
[root@localhost android_source]# repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-2.3.5_r1
- 同步源码树:
要将 Android 源代码树从默认清单中指定的代码库下载到工作目录,请运行以下命令(以后只需执行这条命令来同步):
[root@localhost android_source]# repo sync -j4
由于使用 HTTPS 协议更安全,并且更便于我们灵活处理,所以强烈推荐使用 HTTPS 协议同步 AOSP 镜像。
由于 AOSP 镜像造成CPU/内存负载过重,我们限制了并发数量,因此建议: 1. sync的时候并发数不宜太高,否则会出现 503 错误,即-j后面的数字不能太大,建议选择4。 2. 请尽量选择流量较小时错峰同步。
源代码目录含义:
目录结构
[root@localhost android_source]# ls -l
total 48
drwxr-xr-x. 9 root root 4096 Dec 10 14:04 bionic
drwxr-xr-x. 5 root root 58 Dec 10 14:04 bootable
drwxr-xr-x. 7 root root 4096 Dec 10 14:04 build
drwxr-xr-x. 8 root root 4096 Dec 10 14:04 cts
drwxr-xr-x. 16 root root 4096 Dec 10 14:04 dalvik
drwxr-xr-x. 20 root root 4096 Dec 10 14:04 development
drwxr-xr-x. 7 root root 69 Dec 10 14:04 device
drwxr-xr-x. 83 root root 4096 Dec 10 14:05 external
drwxr-xr-x. 5 root root 36 Dec 10 14:05 frameworks
drwxr-xr-x. 9 root root 4096 Dec 10 14:05 hardware
drwxr-xr-x. 14 root root 4096 Dec 10 14:05 libcore
-r--r--r--. 1 root root 87 Dec 10 14:04 Makefile
drwxr-xr-x. 8 root root 4096 Dec 10 14:05 ndk
drwxr-xr-x. 7 root root 88 Dec 10 14:05 packages
drwxr-xr-x. 15 root root 4096 Dec 10 14:06 prebuilt
drwxr-xr-x. 27 root root 4096 Dec 10 14:06 sdk
drwxr-xr-x. 9 root root 91 Dec 10 14:06 system
某一些目录下载的版本不一样,可能会不存在
目录名 | 描述 |
---|---|
abi | 应用程序二进制接口 |
bionic | C/C++运行时库,在NDK程序中很大一部分调用就是这里的程序 |
bootable | 用于Android装载和启动程序,其中就包括bootloader和recovery。bootloader是Android中唯一在LInux内核之前执行的程序。通过这段程序可以初始化硬件,建立内存控件的映射图等,总之,bootloader就是为LInux内核准备合适的运行环境。 |
build | 用于编译Android源代码以及建议system.img,ramdisk.img等文件的工具 |
cts | 用于兼容性测试的工具 |
dalvik | Dalvik虚拟机的源代码 |
development | 高层的开发和调试工具 |
device | 与设备相关的代码 |
docs | 包含与Android源代码项目的文档和工具,如Dalvik虚拟机格式文档等 |
external | 扩展工具的源代码 |
framworks | Android框架层源代码。也就是Android SDK的源代码 |
hardware | 硬件层接口和库 |
libcore | Java核心库 |
ndk | NDK相关的源代码 |
packages | 与Android系统一同发布的应用程序的源代码 |
prebuilts | Android在各种平台下编译之前要使用的工具 |
sdk | 在开发环境中使用的工具,如ddms,draw9path,sdkmanager等 |
system | Android的基本系统 |
网友评论