AOSP 源碼下載

網上關於這塊大部分教程都是無效的,由於牆的緣故,沒法使用官方提供的下載連接,我這裏使用了清華大學的鏡像,是可以順利將 AOSP 下載下來。若是你尚未安裝 Ubuntu,請看《VirtualBox 安裝 Ubuntu》。html

下載 repo

Repo 是一款工具,可以讓您在 Android 環境中更輕鬆地使用 Git,首先須要安裝 Git:python

sudo apt-get install git
複製代碼

建立 bin,並加入 path:android

mkdir ~/bin
PATH=~/bin:$PATH
複製代碼

下載 repo:git

curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
複製代碼

錯誤:bootstrap

Command 'curl' not found, but can be installed with:

sudo apt install curl
複製代碼

須要安裝 curl,執行命令sudo apt-get install curl進行安裝。bash

注意:命令 apt 在低版本 Ubuntu 不行,本教程統一使用命令 apt-getcurl

權限設置:ide

chmod a+x ~/bin/repo
複製代碼

如何驗證 repo 安裝成功

輸入命令repo,提示:工具

/usr/bin/env: "python": 沒有那個文件或目錄
複製代碼

須要安裝 python,執行命令sudo apt-get install python安裝,再次輸入命令repo,提示以下即 repo 安裝成功:ui

error: repo is not installed.  Use "repo init" to install it here.
複製代碼

下載源碼

初始化倉庫

創建工做目錄 AOSP,命令:

mkdir AOSP
cd AOSP
複製代碼

初始化倉庫:

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
複製代碼

錯誤

錯誤1

error.GitError: manifests var: 
*** 請告訴我你是誰。

運行

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

來設置您帳號的缺省身份標識。
若是僅在本倉庫設置身份標識,則省略 --global 參數。
複製代碼

沒有設置身份,要使用 Gerrit 代碼審覈工具,您須要一個與已註冊的 Google 賬號關聯的電子郵件地址:

git config --global user.email "wuxiaolong.me@gmail.com"
git config --global user.name "WuXiaolong"
複製代碼

其餘郵箱應該也是能夠的。

錯誤2

fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle
fatal: error [Errno 101] Network is unreachable
複製代碼

由於 repo 運行過程當中會嘗試訪問官方的 git 源更新本身,若是想使用 tuna 的鏡像源進行更新,將以下內容複製到你的~/.bashrc裏,而後重啓終端模擬器。

export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
複製代碼

錯誤3:

curl: (22) The requested URL returned error: 404 Not Found
Server does not provide clone.bundle; ignoring.
複製代碼

爲何會出現此種 log ?

在經過 Git 的 HTTP 協議下載最新數據以前,Repo 嘗試下載預先打包的捆綁文件以引導每一個 git。

原文:Repo attempts to download a prepackaged bundle file to bootstrap each git prior to downloading the most recent data via Git's HTTP protocol.

若是捆綁文件不可用(如本例所示),Repo 將忽略它並繼續進行,換句話說,不要注意這一點。

原文:If a bundle file isn't available (like in this case), Repo will ignore it and proceed anyway. In other words, don't pay any attention to this.

最後,如何取消 download clone.bundle ?

只須要 在repo 添加一個參數 --no-clone-bundle,以下:

可經過 repo -h 得到參數 --no-clone-bundle 的說明

repo init --no-clone-bundle
repo sync --no-clone-bundle
複製代碼

指定某個 Android 版本

若是須要某個特定的 Android 版本(列表):

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-8.0.0_r1
複製代碼

提示如下,即 init 成功:

Your identity is: WuXiaolong <wuxiaolong.me@gmail.com>
If you want to change this, please re-run 'repo init' with --config-name

repo has been initialized in /media/disk/Project/AOSP

複製代碼

疑問

若是沒有指定版本,如何知道下載好的 AOSP 是什麼版本?

找到build/make/core/version_defaults.mk文件打開,搜索PLATFORM_SDK_VERSION,找到了 PLATFORM_SDK_VERSION := 28,從 SDK 版本能夠知道 AOSP 版本是 9.0,我下載的就是最新的。

同步代碼

同步源碼樹(之後只需執行這條命令來同步):

repo sync
複製代碼

而後等待下載完畢:

正在檢出文件: 100% (1709/1709), 完成.
正在檢出文件: 100% (9492/9492), 完成.在檢出文件:   2% (251/9492)   
正在檢出文件: 100% (617/617), 完成.正在檢出文件:  17% (106/617)   
正在檢出文件: 100% (15779/15779), 完成.檢出文件:   7% (1251/15779)   
正在檢出文件: 100% (29/29), 完成.  正在檢出文件:  27% (8/29)   
Syncing work tree: 100% (568/568), done. 
複製代碼

最後整個源碼大小 27.2 G。

參考

source.android.google.cn/setup/

公衆號

個人公衆號:吳小龍同窗,歡迎交流~

相關文章
相關標籤/搜索