AOSP SetUp(一)- Start:「建置 AOSP 的開發環境」

Android:AOSP

RICK
Jul 21, 2020

概要

這篇文章的主要目標是要學習如何「建置 AOSP 的開發環境」,而文章內容的參考資訊主要來源為,本篇文章主要參考資料為「AOSP / Set up / START / Establishing a Build Environment」。

在此之前,有一個重要的前提,該環境不支援「Windows」系統,如下圖紅線部分:

事實上,若依據 Google 的建議,其最理想的作業系統環境為「Ubuntu LTS 14.04」或「Debian」,如下圖:

但由於「Ubuntu LTS」的版本支持為五年,在「2020」的現今,「14.04」版已經不再被支持,因此,筆者在選擇版本時,就不考慮官方文件上所推薦的「14.04」,而是選擇了「Ubuntu LTS 18.04」。

備註:「LTS」是「Long-term Support」的縮寫,基本上,為了追求專案執行期間環境的穩定,筆者建議使用「LTS」作為開發環境。

正文

下載「Ubuntu」映像檔並製作開機隨身碟

其安裝映像檔可以在「Ubuntu 正體中文站」下載,如下圖:

而「開機隨身碟」的製作筆者推薦使用「UNetbootin」;當然,製作成「開機光碟」也是可以的。

安裝「Ubuntu LTS 18.04」

這部份只需要把「開機光碟 / 隨身碟」放入後,並依照訊息提示並「Next」到底就可以完成「Ubuntu」系統的安裝了,事實上,「Ubuntu 桌面版」的圖形化介面已經非常的完善了,因此,我就不逐個步驟講解了。

初次啟動「Ubuntu」

根據經驗,我記得第一次啟動要先安裝「網路工具」,指令如下:

sudo apt-get install net-tools

接著下更新指令,將內建的套件更新至最新版本,指令如下:

sudo apt-get update

備註:事實上,筆者習慣搭配「upgrade」指令一併使用。

「upgrade」的指令如下:

sudo apt-get upgrade

安裝「Linux」的「Build Environment」套件

這步驟是在安裝「編譯專案」所需要的「套件」,但由於版本不同,因此所安裝的套件名稱略有差異,修改後適合「18.04」版的指令如下:

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip

操作截圖如下:

備註:事實上,「編譯過程」中所需要的套件並不僅只有我們的安裝那幾項,還有部分的套件是「Ubuntu」系統本身就已經內建的,然而問題是「內建套件的內容」可能會因為「版本差異」而有所不同,並因此導致「套件缺失」的 Bug。

同樣地,在更新完後,我建議在輸入一次「更新指令」,以確保套件皆為最新版本,指令如下:

sudo apt-get update

待更新完畢後,其實就已經完成了「編譯環境的設定了」。

其它「相關事項」

順帶一提,在官方的說明文件中,它還有說明一些關於套件的事情,事實上,若讀者們仔細查看或許就會發現,在上述我們所安裝的套件中並沒有「OpenJDK」、「Make」…等套件,其原因並不是在「AOSP」的編譯過程不需要這些套件的參與,而是因為各種不同的原因,如「內建」、「預裝」⋯等,且聽筆者娓娓道來。

「OpenJDK」套件

「OpenJDK」絕對是必要的套件之一,我們不需要額外安裝的原因是「AOSP」專案在其「master」分支就已經預載好「prebuilt」版本的「OpenJDK」,官方說明如下:

「Make」套件

「Make」是編譯的工具套件,也是編譯「AOSP」過程中很重要的套件之一,其不須額外安裝的理由同上。

「Git」套件

「Git」是用於版本控管的套件,該套件在後續的步驟中會安裝。

「Python」套件

事實上,「Python」是 Google 團隊慣用的程式語言之一,在許多 Google 的專案中都可以看到「Python」的身影,而「AOSP」亦不例外,在「AOSP」該項目中就有許多腳本工具都是使用「Python」所編寫的。

但是,「Python 有兩個主要版本線,其兩者並不相容」,如下圖:

「Python 2」目前最新的版本為「2.7.17」,因此當我們在談論 Python 時,我們會習慣用「Python 2.7」來稱呼舊版本的「Python」;而一般所指的「Python」通常是指「Python 3」或以「python 3.x」稱之,目前最新的版本為「3.8.2」。

其差異可以參考「Python 2.x 與 3​​.x 版本區別」。

言歸於此,在「AOSP」項目中所需要的 Python 套件是指「Python 2.7」而非較新本的「Python 3.x」,那為什麼在「AOSP」的項目文件中並沒有需要額外再安裝「Python 2.7」呢?

事實上,在早期的「Ubuntu OS」中就內建「Python 2.7」為系統內預設的套件,因此在舊版的「Ubuntu OS」中「Python 2.7」並不需要額外安裝;可是「Ubuntu OS」在某次更版之後,其「內建 Python」就從「Python 2」改為「Python 3」,因此「Python 2」就變成必須額外去安裝的套件了。

總結

雖然這篇文章是針對「Ubuntu LTS 18.04」版,但事實上,「Ubuntu」的其它版本,像是「16.04」、「20.04」…等,其安裝過程也都是大同小異,頂多就是套件更名等。

至此,「AOSP」的編譯環境就已經建置完成了,筆者會在本系列後續分享「AOSP」下載與編譯的過程。

--

--

RICK
RICK

Written by RICK

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

No responses yet