方法一:根據官網教程下載
官網文檔:https://source.android.com/source/downloading
下載方法文檔已經寫的很清楚了,源碼會分爲超級多個git庫,所以谷歌搞了個叫 repo
的工具(windows可以試下用這個https://github.com/esrlabs/git-repo),可以集中下載管理,超級簡單,但國外的東西通常都會有亂七八糟的問題出現,可以自己研究一下。
方法二:自己寫腳本下載
第一步:拿到 git 的 clone url
- 打開鏈接 https://android.googlesource.com/ ,可能需要翻牆(下面直接給出國內鏡像鏈接),找到目錄
platform/manifest
,點擊進去,拿到clone url
,如下圖步驟,url爲:git clone https://android.googlesource.com/platform/manifest
。
- 如果你沒有辦法翻牆,直接使用這個
git clone git://mirrors.ustc.edu.cn/aosp/platform/manifest
- 有大神推薦親測目前最快的鏡像
注意:腳本里面的url也要替換掉
更多參考:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/
git clone https://aosp.tuna.tsinghua.edu.cn/platform/manifest
第二步:下載版本清單,找到你想要下載的版本
# 創建目錄來存放源代碼,建議100G以上
cd /f
mkdir android
cd android
# 下載版本清單
git clone git://mirrors.ustc.edu.cn/aosp/platform/manifest
# git clone https://aosp.tuna.tsinghua.edu.cn/platform/manifest
# 進入目錄
cd manifest
# 列出版本清單
git tag
# 切換到想要下載的版本,比如我這裏是 android-9.0.0_r42
git checkout android-9.0.0_r42
第三步:寫下載腳本(文末有不寫腳本的方法,直接下載自己需要的部分)
腳本用的是 python
,自行下載安裝python吧。
腳本前面幾個配置成自己的目錄就行了。
腳本比較簡單,就是從清單裏面讀取git庫,一個一個下載,可以自行優化。
# coding=utf-8
import xml.dom.minidom
import os
############### 需要配置 #######################
# 源碼存儲路徑,替換成你自己的路徑
DOWNLOAD_PATH = r"E:\android\android-9.0.0_r42"
# 清單文件路徑
MANIFEST_PATH = r"E:\android\manifest\default.xml"
# GIT_PREFIX = "git clone --depth 1 https://android.googlesource.com/"
# GIT_PREFIX = "git clone --depth 1 https://aosp.tuna.tsinghua.edu.cn/"
GIT_PREFIX = "git clone --depth 1 git://mirrors.ustc.edu.cn/aosp/"
GIT_SUFFIX = ".git"
###############################################
# 新建目錄
if not os.path.exists(DOWNLOAD_PATH):
os.makedirs(DOWNLOAD_PATH)
root = xml.dom.minidom.parse(MANIFEST_PATH).documentElement
for project in root.getElementsByTagName("project"):
path = project.getAttribute("path")
name = project.getAttribute("name")
os.chdir(DOWNLOAD_PATH)
last = path.rfind("/")
if last != -1:
path = os.path.join(DOWNLOAD_PATH, path[:last])
if not os.path.exists(path):
os.makedirs(path)
os.chdir(path)
cmd = GIT_PREFIX + name + GIT_SUFFIX
print(cmd)
os.system(cmd)
注:關於--depth 1
,表示只下載最新的一個提交信息,如果不加depth參數,則會下載整個歷史提交記錄,親測單單一個小項目Settings
,代碼大概是80m
,但是.git目錄高達1.7G
,如果不加depth,則會下載整個1.7G,如果加上,則不到100m。
第四步:運行腳本
我腳本文件名叫 download.py,運行 python download.py
,然後就是超級漫長的等待,反正我下載了一個通宵。。
方法三: 不寫腳本,只下載自己需要的部分
比如我只是想看一下Launcher3
這個應用的源碼,我就沒必要下載整個包括framework的源碼吧,流量是其次,畢竟時間是寶貴,留點時間約妹紙吧。
1、在清單文件中找到Launcher3
的部分,如下:
<project path="packages/apps/Launcher3" name="platform/packages/apps/Launcher3" groups="pdk-fs" />
2、構建clone的url
,如下:
git clone --depth 1 git://mirrors.ustc.edu.cn/aosp/platform/packages/apps/Launcher3.git
3、創建管理目錄,以便下載多了混亂,然後進入目錄下載,如下:
// 這裏是手寫的,可能有錯,大概意思就是創建目錄,進入目錄,下載,搞定。
mkdirs /AndroidSrc/android-9.0.0_r42/packages/apps/
cd /AndroidSrc/android-9.0.0_r42/packages/apps/
git clone --depth 1 git://mirrors.ustc.edu.cn/aosp/platform/packages/apps/Launcher3.git
4、秒下,收工!
參考文章:https://www.cnblogs.com/zhangtingkuo/p/4703142.html
推薦個在線源碼:http://androidxref.com/