超級簡單的Android源碼下載

方法一:根據官網教程下載

官網文檔: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
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

DYY

DYY

第三步:寫下載腳本(文末有不寫腳本的方法,直接下載自己需要的部分)

腳本用的是 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/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章