下载msysgit,安装
官方下载:http://code.google.com/p/msysgit/downloads/list,
打开Git Bash,运行命令
cd D:
git clone https://android.googlesource.com/platform/manifest.git
输入命令,切换到manifest文件夹
cd manifest
git tag 列出android各个分支版本号
git tag
下载android-2.2系统源代码,输入以下命令,假设要下载其它版本号源代码,checkout git tag列出的版本号号就可以
git checkout android-2.2_r1
checkout之后,manifest/default.xml文件里记录的就是android2.2系统各个模块的路径
我们来分析一下default.xml文件,
以bionic为例,path属性表示bionic源代码的相对路径,如果android源代码在d:/android-source,下载bionic之后,应该存放在d:/android-source/bionic文件夹
name属性是bionic源代码在库上的路径,完整的路径就是:http://android.googlesource.com/platform/bionic.git,有了源代码下载路径,运行git clone就能够将bionic源代码下载到本地
<project path="bionic" name="platform/bionic" />
Android源代码中project非常多,一个一个下载比較麻烦,本人写了一个python脚本,双击download-src.py运行此脚本,就能够将android完整源代码下载到本地。
PS:运行此脚本的前提是已经运行了git checkout,选择好了要下载的Android源代码版本号,假设你的manifest文件不是D:/manifest/default.xml,请自行改动脚本。
download-src.py源代码:
import xml.dom.minidom import os from subprocess import call #downloaded source path rootdir = "D:/android-source" #git program path git = "D:/Program Files/Git/bin/git.exe" dom = xml.dom.minidom.parse("D:/manifest/default.xml") root = dom.documentElement prefix = git + " clone https://android.googlesource.com/" 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): os.makedirs(d) os.chdir(d) cmd = prefix + node.getAttribute("name") + suffix call(cmd)