文章目录
- 1. 前言
- 2. 准备工作
- 3. 下载源码
- 4. 小结
1. 前言
下载Android源码,官方的网址:https://source.android.google.cn/setup/downloading
一般是提供给Linux系统环境下使用repo获取源码,那么Windows环境下的同学们下载源码的姿势是怎样的呢?
下面的内容将简单介绍一下Windo下载Android源码的过程。
2. 准备工作
首先,我们知道repo是为了方便管理Android多个git库而开发的Python脚本,其次,有条件的话,需自备梯子科学上网,当然没有也有对应的方法处理。最后,建议留有100GB或以上的硬盘容量,因为Android源代码占用比较大。
综合上述内容,准备环境内容有:
- 安装和配置好Git环境
- 安装和配置好Python环境
- 条件允许的话,自备梯子
- 留有100GB或以上的硬盘容量
3. 下载源码
1. 下载仓库的manifest文件
git clone https://android.googlesource.com/platform/manifest.git
// 不能科学上网就选用国内的清华数据源
git clone https://aosp.tuna.tsinghua.edu.cn/platform/manifest.git
这时会在仓库目录下会生成 manifest文件夹,里面除了 git 的配置外还有default.xml 文件。default.xml定义Android工程的多个git库列表,大致结构如下:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="aosp"
fetch=".."
review="https://android-review.googlesource.com/" />
<default revision="master"
remote="aosp"
sync-j="4" />
<project path="art" name="platform/art" groups="pdk" />
<project path="frameworks/base" name="platform/frameworks/base" groups="pdk-cw-fs,pdk-fs" />
<!--每个project标签有path和name属性, -->
</manifest>
default.xml中的path是Android工程的路径结构,而name是git下载的具体路径值。
如果需要切换下载源码的分支,进入到manifest里执行git分支切换操作即可。笔者一般下载默认的master分支就好了,其为最新的稳定释放版本。
2. 新建一个Python文件,复制下面代码到文件中,修改工程工程路径后执行此脚本,即可开始下载代码了
import xml.dom.minidom
import os
from subprocess import call
# 1. 笔者的源码保存根路径
rootdir = "E:/AOSP"
# 2. 笔者的 git 安装路径
git = "D:/Program Files/Git/bin/git.exe"
# 3. 笔者的manifest文件夹中default.xml 的文件路径
dom = xml.dom.minidom.parse("E:/AOSP/manifest/default.xml")
root = dom.documentElement
# 4. 没有梯子可以使用清华源下载
# prefix = git + " clone https://android.googlesource.com/"
prefix = git + " clone https://aosp.tuna.tsinghua.edu.cn/"
suffix = ".git"
if not os.path.exists(rootdir):
os.mkdir(rootdir)
for node in root.getElementsByTagName("project"):
os.chdir(rootdir)
d = node.getAttribute("path")
last = d.rfind("/")
if last != -1:
d = rootdir + "/" + d[:last]
if not os.path.exists(d):
# 根据path属性下的值,创建当前工程的一系列上级目录
os.makedirs(d)
os.chdir(d)
# 根据prefi的值加上name属性值拼接对应的git命令下载代码
cmd = prefix + node.getAttribute("name") + suffix
call(cmd)
如果想单独下载某个模块,一般的格式为git clone [数据源][project-name].git
,这里以Launcher3为例,其project标签<project path="packages/apps/Launcher3" name="platform/packages/apps/Launcher3"/>
,此时name属性值为platform/packages/apps/Launcher3
,拼接数据源得到最终的下载地址:git clone https://aosp.tuna.tsinghua.edu.cn/platform/packages/apps/Launcher3.git
4. 小结
下载Android源代码是很有必要的,阅读源代码可以让我们对Android有更深的理解。所以我们无论使用哪个操作系统,都应该把代码下载到本地,方便学习。