設定 AOSP 開發環境 (9.0 以上版本)

下載及建構 Android 最新發布分支版本 (android16-release) 的 Android 原始碼前,請先確認硬體符合必要需求,且已正確安裝必要軟體。您也應該熟悉下列詞彙:

Git
Git 是免費的開放原始碼分散式版本控制系統。Android 會使用 Git 進行分支、提交、差異和編輯等本機作業。如需 Git 學習資源,請參閱 Git 說明文件
Repo
Repo 是 Git 的 Python 包裝函式,可簡化跨多個 Git 存放區的複雜作業。Repo 並不會取代所有版本控制作業的 Git,只會簡化複雜的 Git 作業。Repo 會使用資訊清單檔案,將 Git 專案匯總到 Android 超級專案中。
資訊清單檔案
資訊清單檔案是 XML 檔案,用於指定 Android 來源中的各種 Git 專案在 AOSP 來源樹狀結構中的位置。

Meet 設備需求

開發工作站應符合或超過下列硬體需求:

  • 64 位元 x86 系統。

  • 至少 400 GB 的可用磁碟空間,用於簽出及建構程式碼 (簽出需要 250 GB,建構需要 150 GB)。

  • 至少 64 GB 的 RAM。Google 使用 72 核心的機器 (64 GB RAM) 建構 Android。使用這項硬體設定,完整建構 Android 大約需要 40 分鐘,累加建構 Android 則只需要幾分鐘。相較之下,使用 6 核心電腦和 64 GB RAM 進行完整建構,大約需要 6 小時。

符合作業系統需求

開發工作站必須執行任何 64 位元 Linux 發行版,並搭載 GNU C 程式庫 (glibc) 2.17 以上版本。

安裝必要套件

如要建構 Android 11 以上版本,必須使用 Ubuntu 18.04 以上版本。如要安裝 Ubuntu 18.04 以上版本所需的套件,請執行下列指令:

sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev-i386 x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

這個指令會安裝 Git (用於下載 AOSP 來源碼),以及其他套件。

安裝必要軟體

您必須先安裝 OpenJDK、Make、Python 3 和 Repo,才能使用 AOSP。Android 最新發布分支版本隨附預先建構的 OpenJDK、Make 和 Python 3 版本,因此不需要額外的安裝步驟。下一節說明如何安裝 Repo。

安裝 Repo

請按照下列步驟安裝 Repo:

  1. 下載目前的套件資訊:

    sudo apt-get update
  2. 執行下列指令來安裝 Repo 啟動器:

    sudo apt-get install repo

    Repo 啟動器提供 Python 指令碼,可初始化結帳程序並下載完整的 Repo 工具。

    如果成功,請跳到步驟 4。

  3. (選用) 使用下列一連串指令手動安裝 Repo:

    export REPO=$(mktemp /tmp/repo.XXXXXXXXX)
    curl -o ${REPO} https://storage.googleapis.com/git-repo-downloads/repo
    gpg --recv-keys 8BB9AD793E8E6153AF0F9A4416530D5E920F5C65
    curl -s https://storage.googleapis.com/git-repo-downloads/repo.asc | gpg --verify - ${REPO} && install -m 755 ${REPO} ~/bin/repo

    前三個指令會設定臨時檔案、將 Repo 下載至檔案,並確認提供的金鑰符合必要金鑰。如果這些指令成功執行,最後一個指令就會安裝 Repo 啟動器。

  4. 確認 Repo 啟動器版本:

    repo version

    輸出內容應指出 2.4 以上版本,例如:

    repo launcher version 2.45

設定替代輸出目錄

根據預設,每個建構作業的輸出內容都會儲存在相符來源樹狀結構的 out/ 子目錄中。您可以匯出 OUT_DIR 環境變數來覆寫這個目錄。舉例來說,如要將輸出內容儲存在其他硬碟上,可以將 OUT_DIR 指向該硬碟:

export OUT_DIR=my_other_drive

後續步驟