請按照本頁的指示建構 Android。
設定建構環境
在工作目錄中,找出 envsetup.sh
指令碼,設定建構環境:
source build/envsetup.sh
這個指令碼會匯入多個指令,方便您處理 Android 原始碼,包括本頁面使用的指令。如要查看指令碼來源,請參閱 platform/build/envsetup.sh
。如要查看內建說明,請輸入 hmm
。
選擇目標
建構 Android 前,您必須先找出要建構的目標。目標會反映您要建構的目標平台。如要識別要建構的目標,請使用 lunch
指令,後面加上代表目標的字串。例如:
lunch aosp_cf_x86_64_only_phone-aosp_current-userdebug
您應該會看到目標和建構環境的摘要:
============================================
PLATFORM_VERSION_CODENAME=Baklava
PLATFORM_VERSION=Baklava
TARGET_PRODUCT=aosp_cf_x86_64_only_phone
TARGET_BUILD_VARIANT=userdebug
TARGET_ARCH=x86_64
TARGET_ARCH_VARIANT=silvermont
HOST_OS=linux
HOST_OS_EXTRA=Linux-6.10.11-1rodete2-amd64-x86_64-Debian-GNU/Linux-rodete
HOST_CROSS_OS=windows
BUILD_ID=BP1A.250305.020
OUT_DIR=out
============================================
代表目標的字串格式如下:
lunch product_name-release_config-build_variant
這個字串的元件包括:
product_name
是您要建構的產品名稱,例如aosp_cf_x86_64_only_phone
或aosp_husky
。你的特定product_name
可以採用裝置專屬格式,但 Google 裝置使用的格式包含下列元件:aosp
是指 Android 開放原始碼平台。- (選用) 如果要在 Cuttlefish 模擬器中執行目標,請加入
cf
。 - 架構和硬體 (代碼),例如
x86_64_only_phone
或husky
(Pixel 8 Pro 的代碼)。如需 Google 裝置的代號清單,請參閱「裝置代號」。
release_config
設為發布版本設定,例如名為aosp_current
的開發版本設定。發布設定會識別特定功能和程式碼,這些功能和程式碼位於功能發布旗標後方,且已啟用或停用建構作業。如要進一步瞭解發布設定,請參閱「設定功能旗標的發布值」。字串的
build_variant
部分可以是下表中的其中一個值:build_variant
說明 user
這個建構變體提供的安全性存取權有限,適合用於正式版。 userdebug
裝置開發人員可透過這個建構變體,瞭解開發中版本的效能和電力。使用 userdebug
建構版本進行開發時,請遵循 userdebug 指南。eng
如果您不在意效能和電力,這個建構變體的建構時間較短,最適合日常開發作業。
如果執行 lunch
時未提供任何引數,系統會提供常見目標的清單。
您也可以使用本頁面上的資訊和裝置代號,將目標字串的元素拼湊在一起,建立自己的目標字串。
查看目前目標
如要查看目前的午餐設定,請執行:
$ echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"
建構程式碼
執行下列指令來建構目標。視工作站規格而定,第一次建構可能需要不到一小時,也可能需要幾小時。後續建構所需時間會大幅減少。
m
建構作業的輸出內容會顯示在 $OUT_DIR
中。如果您建構不同的目標,每個目標建構作業都會顯示在 $OUT_DIR
中。
m
指令會從樹狀結構頂端開始建構,因此您可以在子目錄中執行 m
。如果已設定 TOP
環境變數,m
指令就會使用該變數。如果未設定 TOP
,m
指令會從目前目錄查閱樹狀結構,嘗試找出樹狀結構頂端。
m
指令可使用 -jN
引數處理平行工作。如果您未提供 -j
引數,建構系統會自動選取認為最適合您系統的平行工作計數。
您可以在 m
指令列中列出模組名稱,建構特定模組,而非完整的裝置映像檔。此外,m
指令還提供一些稱為「目標」的虛擬目標。舉例來說,m nothing
不會建構任何項目,但會剖析及驗證建構結構。如要查看有效目標清單,請輸入 m help
。
排解建構錯誤 (8.0 或更早版本)
如果您建構的是 AOSP 8 或更早版本,m
遇到 Java 版本問題時可能會中止。舉例來說,您可能會收到以下訊息:
************************************************************
You are attempting to build with the incorrect version
of java.
Your version is: WRONG_VERSION.
The correct version is: RIGHT_VERSION.
Please follow the machine setup instructions at
https://source.android.com/source/initializing.html
************************************************************
以下是可能的原因和解決方法:
- 您未按照「為 AOSP 開發作業設定 (2.3 - 8.0) 」的 JDK 專區規定,安裝正確的 JDK。
- 路徑中出現另一個先前安裝的 JDK。在路徑開頭加上正確的 JDK,或移除有問題的 JDK。