網上關於這塊大部分教程都是無效的,由於牆的緣故,沒法使用官方提供的下載連接,我這裏使用了清華大學的鏡像,是可以順利將 AOSP 下載下來。若是你尚未安裝 Ubuntu,請看《VirtualBox 安裝 Ubuntu》。html
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-get
。curl
權限設置:ide
chmod a+x ~/bin/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 版本(列表):
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/
個人公衆號:吳小龍同窗,歡迎交流~