AOSP SetUp(二)- Download:「下載 AOSP 原始碼」
概要
這篇文章的主要目標是要學習如何從「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
是的,指令就是如此簡單,至此,打完收工。
沒錯,就是收工;因為接著就是漫長的等待,具體須耗費多久時間得依照當下網路速度而定,但根據筆者的經驗,這通常都是數小時以上。