建構 Android

按照此頁面上的說明建立 Android。

設定您的建置環境

從您的工作目錄中,取得envsetup.sh腳本來設定您的建置環境:

$ source build/envsetup.sh

此腳本匯入多個命令,使您可以使用 Android 原始程式碼,包括本頁上使用的命令。若要查看腳本的原始程式碼,請參閱platform/build/envsetup.sh 。若要查看內建幫助,請輸入hmm

選擇目標

在建立 Android 之前,您必須確定要建置的目標。要確定要建置的目標,請使用lunch命令,後面跟著一個標識您的目標產品和建置的目標

lunch aosp_cf_x86_64_phone-trunk_staging-userdebug

查看目前目標

要查看當前的午餐設置,請運行:

$ echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"

表示目標的字串具有以下格式:

lunch product_name-release-build_variant

該字串的組成部分是:

  • product_name是您要建立的產品的名稱,例如aosp_cf_x86_64_phoneaosp_husky 。您的特定product_name可以遵循您自己的格式,但 Google 使用的格式具有以下組成部分:

    • aosp指的是 Android 開源平台。
    • (可選)當目標打算在 Cuttlefish 模擬器中運行時,包含cf
    • 架構和硬件,例如x86_64_phonehusky (Pixel 8 pro)。
  • release設定為trunk-staging

  • 字串的build_variant部分可以是下表中的三個值之一:

    build_variant描述
    user此構建變體提供有限的安全訪問,適合生產。
    userdebug此建置變體可協助裝置開發人員了解正在開發的版本的效能和功能。使用userdebug版本進行開發時,請遵循userdebug 指南
    英語此構建變體具有更快的構建時間,如果您不關心性能和功耗,那麼它最適合日常開發。

建構程式碼

運行以下命令來建立您的目標。根據工作站的規格,第一次建造可能需要不到一小時,最長可能需要幾個小時。後續建造所需的時間明顯減少。

$ m

您應該看到的第一個輸出是目標和建置環境的概要:

============================================
PLATFORM_VERSION_CODENAME=VanillaIceCream
PLATFORM_VERSION=VanillaIceCream
PRODUCT_INCLUDE_TAGS=com.android.mainline
TARGET_PRODUCT=aosp_arm
TARGET_BUILD_VARIANT=eng
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
TARGET_CPU_VARIANT=generic
HOST_OS=linux
HOST_OS_EXTRA=Linux-6.5.13-1rodete2-amd64-x86_64-Debian-GNU/Linux-rodete
HOST_CROSS_OS=windows
BUILD_ID=AOSP.MAIN
OUT_DIR=out
============================================

m命令從樹的頂部構建,因此您可以從子目錄中運行m 。如果設定了TOP環境變量, m命令將使用它。如果未設定TOPm指令將從目前目錄尋找樹,嘗試尋找樹的頂部。

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。