Windows下载Android全部源码
博客专区 > SuShine 的博客 > 博客详情
Windows下载Android全部源码
SuShine 发表于2年前
Windows下载Android全部源码
  • 发表于 2年前
  • 阅读 20
  • 收藏 0
  • 点赞 0
  • 评论 0

华为云·免费上云实践>>>   

下载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)

 

使用清华镜像的方式

 

Android源码由Git进行管理,由于源码由众多的模块组成,每个模块又可能依赖许多第三方库,所以如果想要通过git链接一个个clone下来的话工作量将会非常大,所以Google用Python编写了一个repo工具用来批量下载Android源码(但是这个工具需要linux环境,如果想在windows下使用我们就必须在windows环境下搭建一个模拟的linux环境,这个模拟的linux环境我们可以用Cygwin来搭建)。
首先Google用一个Git仓库用来记录当前Android版本下各个子项目的Git仓库分别处于哪一个分支,这个仓库通常叫做:manifest仓库。这个仓库里面有一个XML文件,其实就是一个文件清单,列出了本代码仓库依赖哪些代码,该去哪下载,分支是什么。repo工具首先会clone这个仓库,然后根据这个XML文件(default.xml)列出的路径去批量下载源码。在windows下一般可以用以下两种方法来下载Android源码。

注意:由于google的链接被墙了,所以我们可以使用清华大学提供的镜像链接进行下载
https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

一、自制Python脚本批量下载

需要工具如下:
下载git,安装 官方下载:https://git-scm.com/downloads/
下载python,安装 官方网址:http://www.python.org
打开Git Bash,执行命令,我是放在c盘的,路径可自定义
git clone https://aosp.tuna.tsinghua.edu.cn/platform/manifest.git
输入命令,切换到manifest目录
cd manifest
Git tag 列出android各个分支版本
下载android-7.0系统源码,输入下面命令,如果要下载其他版本源码,checkout git tag列出的版本号即可
git checkout android-7.0.0_r6
checkout之后,manifest/default.xml文件中记录的就是android7.0系统各个模块的路径,
下面就轮到python出场了,这里用的是网上的一段python代码,实现源码的批量下载
执行此脚本的前提是已经执行了git checkout,选择好了要下载的Android源码版本,如果你的manifest文件不是C:\Android\Android Src\manifest\default.xml,还要把里面的git.exe的路经修改成你的安装路径,请自行修改脚本。
download-src.py源码:

import xml.dom.minidom  
import os  
from subprocess import call  

#downloaded source path  
rootdir = "C:/Android/Android Src"  

#git program path  
git = "F:/Users/Richard/AppData/Local/GitHub/PortableGit_c2ba306e536fdf878271f7fe636a147ff37326ad/bin/git.exe"
dom = xml.dom.minidom.parse("C:/Android/Android Src/manifest/default.xml")  
root = dom.documentElement  

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):  
            os.makedirs(d)  
        os.chdir(d)  
    cmd = prefix + node.getAttribute("name") + suffix  
    call(cmd)

执行这个脚本之后将会自动下载源码

二、安装cygwin

1.下载 Cygwin ,然后就是一路的下一步(注意:如果第一次安装,你需要选install from internet
然后就是选安装位置,还有临时文件的位置和连接网络的设置,这些都默认就可以.关键的一步是选择要安装的库和程序,以下这几个是要安装的:
Net -> curl
Devel -> git,git-completion,git-gui,gitk
Libs -> libreadline6,libiconv2
Editors -> vim
Python -> python
如果不好找,你可以在上面的Search上搜索.
2.下载Repo
启动Cygwin,然后cd /bin,切到bin目录执行
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
下载repo到bin目录.然后执行
chmod a+x repo赋予它可执行的权限.
初始化仓库:
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
如果需要某个特定的 Android 版本:
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-4.0.1_r1
同步源码树(以后只需执行这条命令来同步):

共有 人打赏支持
粉丝 118
博文 312
码字总数 79453
×
SuShine
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: