AOSP SetUp(二)- Download:「下載 AOSP 原始碼」

Android:AOSP

RICK
Jul 21, 2020

概要

這篇文章的主要目標是要學習如何從「AOSP」官方項目中下載所需要的原始碼,本篇文章主要參考資料為「AOSP / Set up / DOWNLOAD」。

「AOSP」專案是藉由「Git」和「Repo」這兩項工具來進其專案的管理和版本控制,如下圖:

因此筆者在本篇文章會從「Source Control Tool」開始並逐一步驟進行說明。

正文

安裝「Source Control Tools

根據說明文件可以得知該項目的「Source Control Tools」所指的就是「Git」和「Repo」兩項工具。

但除「Git」和「Repo」之外,還有其它套件需要安裝,筆者將逐一介紹。

安裝「Git」套件

首先是「Git」的安裝,Git 是一種分散式的版本管理工具,與「CVS」和「SVN」等「集中式版本管理工具」在其原理上有著不小的差異,但毫無疑問的是「Git」絕對是當前最夯的「版本控管工具」,沒有之一。

然而,隨著「Git」的使用越發廣泛與普及,其相關資源也相對逐漸完善,像是相關軟體、輔助套件⋯等,例如「Sourcetree」就是個相當知名且方便使用的「圖形介面輔助軟體」。

此外,其支援「Git」的伺服器平台亦相當眾多,像是被稱為開源軟體集散地的「GitHub」,或是開源的「GitLab」和與受企業親睞的「Bitbucket」等。

事實上,「Git」不僅適用於「個人」,對於「多人協作專案」的管理亦相當強大,甚至延伸出「Git Flow」等流程規範,是的,它就是一種「規範」。

言歸正傳,安裝「Git」的指令如下:

sudo apt-get install git

此外,若已經安裝「Git」,我們也可以藉由指令來確認其版本,如下:

git version

安裝「Curl」和「Python」套件

由於「Repo」套件的情況比較特殊,因此我們稍後再述。

在此之前,還有另外兩個套件也是下載「AOSP Source」時所必要的套件,分別為「Curl」和「Python」。

「Curl」套件是跟網頁資料的抓取有關,而「Python」則是因為 Google 使用了該語言撰寫了方便開發者使用的腳本,例如「Repo」初始化腳本,因此必須要安裝。

首先是「Curl」,安裝指令如下:

sudo apt-get install curl

接著是「Python」,指令如下:

sudo apt-get install python

同樣地,我們亦可以使用指令來確認套件版本,「Curl」的版本確認指令如下:

curl --version

而「Python」的版本確認指令如下:

python

完成畫面如下:

安裝「Repo」套件

根據說明,我們知道「Repo」可以分為兩個部分,第一部分是「啓動器」,其實它就只是個用「Python」撰寫的腳本,而這部份就是我們要安裝的部份,這就是為什麼我們之前要先確認我們的環境是否有安裝「Python」套件的原因。

至於另外一部分,就是完整的「Repo」,如官方文件所描述:「The full Repo tool is by default in $SRCDIR/.repo/repo/… and receives forwarded commands from the downloaded Repo Launcher.」,亦即完整的 Repo 會藉由啟動腳本來接收或轉發命令。

好,廢話不多說,直接開始安裝「Repo 啓動器」,首先,我們要確認在我們的「工作目錄」下底,有「bin」這個資料夾:

如果沒有的話就自行建立一個「bin」資料夾,指令如下:

mkdir ~/bin

接著將「bin」加入「PAHT」環境中,如下:

PATH=~/bin:$PATH

接著,就是下載「Repo 啓動器」,此時我們將透過「curl」套件來完成。

下載「Repo 啓動器」指令如下:

curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo

並修改一下權限:

chmod a+x ~/bin/repo

至此,「下載」的前置作業已經完成。

備註:Python 版本導致下載異常的問題請參考此連結

初始化「 Repo Client」

由於項目「AOSP」是藉由「Git」和「Repo」來管理原始碼,因此,如果我們要下載「AOSP」的原始碼,我們對「Repo」初始化。

首先,我們要先建立存放「Source」的資料夾,官方說明如下:

筆者將目錄名稱命名為「MyAospPrj」,指令如下:

mkdir "MyAospPrj"

並移至該目錄底下:

cd "MyAospPrj"

然後,因為我們在下載原始碼的過程中會使用到「Gerrit」,它是一種代碼審核工具,因此我們需要一個個人的「Google Account」,如果沒有的話,請直接註冊一個。

接著別忘了要將「Google Account」的資訊添加至「Git」的「config」中,如下:

指令如下:

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

注意,這邊請替換成你個人的「Google Account」。

最後,透過「repo init」來初始化「Repo」,事實上,我們可以依照自己的需求來選擇自己所需要的版本:「版本清單連結」,並透過參數「-b」來設定要選擇的「版本分支」,如下:

筆者選擇的「Android」版本是「android-10.0.0_r2」,其資訊如下圖:

示範指令,如下:

repo init -u https://android.googlesource.com/platform/manifest -b android-10.0.0_r2

備註:如未設定「分支」,將會下載「master」,其為當前最新狀態,但通常我們並不會這樣做,因為其可能包含著「測試代碼」等。

下載「AOSP」原始碼

當這一切設定皆就緒以後,我們就可以開始下載「AOSP」原始碼了,官方說明如下:

下載原始碼的指令如下:

repo sync

是的,指令就是如此簡單,至此,打完收工。

沒錯,就是收工;因為接著就是漫長的等待,具體須耗費多久時間得依照當下網路速度而定,但根據筆者的經驗,這通常都是數小時以上。

--

--

RICK
RICK

Written by RICK

當遇到重開機無法解決的 BUG 時,那就試試關機吧。

No responses yet