參考文檔:www.reibang.com/p/a6bb22f5875e
??Android源碼由Git進行管理,由于源碼由眾多的模塊組成稿辙,每個模塊又可能依賴許多第三方庫,所以如果想要通過git鏈接一個個clone下來的話工作量將會非常大气忠,所以Google用Python編寫了一個repo工具用來批量下載Android源碼邻储。(但是這個工具需要linux環(huán)境,如果想在windows下使用我們就必須在windows環(huán)境下搭建一個模擬的linux環(huán)境,這個模擬的linux環(huán)境我們可以用Cygwin來搭建)旧噪。
??首先Google用一個Git倉庫用來記錄當前Android版本下各個子項目的Git倉庫分別處于哪一個分支吨娜,這個倉庫通常叫做:manifest倉庫。這個倉庫里面有一個XML文件淘钟,其實就是一個文件清單宦赠,列出了本代碼倉庫依賴哪些代碼,該去哪下載,分支是什么勾扭。repo工具首先會clone這個倉庫毡琉,然后根據(jù)這個XML文件(default.xml)列出的路徑去批量下載源碼。在windows下一般可以用以下兩種方法來下載Android源碼妙色。
??注意:由于google的鏈接被墻了桅滋,所以我們可以使用清華大學提供的鏡像鏈接進行下載
https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/
或者
http://mirrors.ustc.edu.cn/aosp/
下面我們介紹通過Python 和git下載源碼的方法:
需要工具如下:
?下載git,安裝 官方下載:https://git-scm.com/downloads/
?下載python燎斩,安裝 官方網(wǎng)址:http://www.python.org
打開Git Bash虱歪,執(zhí)行命令,我是放在c盤的栅表,路徑可自定義
git clone https://aosp.tuna.tsinghua.edu.cn/platform/manifest.git
輸入命令笋鄙,切換到manifest目錄
cd manifest
下載最新系統(tǒng)源碼,輸入下面命令:
git checkout
如果要下載其他版本源碼.
列出android各個分支版本:
git tag
checkout git tag列出的版本號即可:
git checkout android-7.0.0_r6
checkout之后怪瓶,manifest/default.xml文件中記錄的就是android7.0系統(tǒng)各個模塊的路徑.
下面就輪到python出場了萧落,這里用的是網(wǎng)上的一段python代碼,實現(xiàn)源碼的批量下載.
執(zhí)行此腳本的前提是已經(jīng)執(zhí)行了git checkout洗贰,選擇好了要下載的Android源碼版本找岖,如果你的manifest文件不是F:\Android\Android Src\manifest\default.xml,還要把里面的git.exe的路經(jīng)修改成你的安裝路徑敛滋,請自行修改腳本许布。
download-src.py源碼:
import xml.dom.minidom
import os
from subprocess import call
#downloaded source path
rootdir = "F:\\Android\\Android_Src"
#git program path
git = "D:\\Program\\Git\\bin\\git.exe"
dom = xml.dom.minidom.parse("F:\\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)
執(zhí)行這個腳本之后將會自動下載源碼
注意事項
1.git安裝目錄不能有空格,不然執(zhí)行會報錯。
2.錯誤提示:0xc000007b
??其實這是一個挺常見的系統(tǒng)報錯绎晃,缺乏VC++庫蜜唾。
??我安裝的是python3.6,這個版本需要的vc版本是2015的了庶艾,下載:Microsoft Visual C++ 2015
3.最后一句執(zhí)行報錯的話:
??把call(cmd)改成call(cmd, shell=True)