文档章节

Windows下载Android全部源码

SuShine
 SuShine
发布于 2015/06/25 15:28
字数 1331
阅读 55
收藏 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
同步源码树(以后只需执行这条命令来同步):

本文转载自:http://blog.csdn.net/sfshine/article/details/41516191

共有 人打赏支持
SuShine
粉丝 126
博文 565
码字总数 154303
作品 0
朝阳
后端工程师
私信 提问
使用git工具获取android源代码

Android使用Git管理源代码的,在Linux下我们可以使用ubuntu来获取系统源码,下面我就逐步介绍在Windows些如何获取Android系统源码了。 一。安装msysGit 在google的http://code.google.com/p/...

jxlgzwh
2013/06/17
0
0
图文详解手把手教你在Windows环境下下载Android源码

大家好,这篇文章我将教大家如何在Windows环境下下载Android源码,Android 自2007年11月5号发布以来,发展速度如此之快,和它走开源的路是分不开的。我们在开发中有什么不明白不清楚的,直接把...

华宰
2011/09/18
14.2K
11
Ubuntu下编译Android源码全过程

一、获取Android 源代码 Git是LinuxTorvalds(Linux之父)为了帮助管理Linux内核开发而开发的一个开放源码的分布式版本控制软件 ,它不同于Subversion、CVS这样的集中式版本控制系统 。在集中式...

鉴客
2011/09/15
1K
0
eclipse工程中查看android源码

在用eclipse开发Android程序时,经常会想看android源码。 下面介绍一种简单的方法,能够方便大家查看android源码。 首先要用SDK Manager将相应版本的android源码下载下来。 1、点击eclispse-...

亭子happy
2013/11/26
0
0
Ubuntu下载编译Android源码全过程

转自:http://www.ylmf.net/ubuntu/tips/2011021022209.html 一、获取Android源代码 Git是LinuxTorvalds(Linux之父)为了帮助管理Linux内核开发而开发的一个开放源码的分布式版本控制软件 ,它...

长平狐
2012/08/28
3K
0

没有更多内容

加载失败,请刷新页面

加载更多

cnetos7+docker+rancher构建基于DevOps的全自动CI【01】

来自DevOps实践分享,分享从开发代码到生产环境部署的一条龙操作的实践及经验, 包含工具技术的选型及考量、私有代码库与私有镜像库的应用等。 1、环境选择 安装Rancher环境,一定要在干净的...

Elson
28分钟前
1
0
21分钟教会你分析MaxCompute账单

背景 阿里云大计算服务MaxCompute是一款商业化的大数据分析平台,其计算资源有预付费和后付费两种计费方式。并且产品每天按照project为维度进行计量计费(账单基本情况下会第二天6点前产出)...

zhaowei121
31分钟前
0
0
CTO职场解惑指南系列(一)

基于科技能够改变世界的事实,几乎每个公司的程序员都自带闪光灯。程序员的手和普通人的手自然是有区别的,“我们可是用双手改变了世界” 。(码农真的是靠双手吃饭,呵呵) 这个世界上但凡靠...

阿里云云栖社区
36分钟前
3
0
css实现图片自适应容器宽高

css实现图片自适应容器宽高的做法一般如下所示 <style>div{width: 200px; height: 200px}div img{width: 100%; height: 100%}</style><div><img src="xxxx.png" /></div> 当外层容......

小草先森
36分钟前
3
0
PlatON在CentOS上编译部署

本文作者为万向区块链CTO罗荣阁。 目录 PlatON在CentOS上编译部署 1. CentOS 环境准备 1.1. 使用rpm 安装devtoolset-7 1.2. 使用rpm 安装dos2unix 1.3. 准备PlatON代码 1.4. 确保build脚本正...

万向区块链
44分钟前
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部