建立 Cuttlefish 混合式裝置

本頁說明如何建立 Cuttlefish 混合型裝置 (CHD)。

CHD 是混合式虛擬 Cuttlefish 裝置,會在裝置的 HAL 上執行實體裝置的系統映像檔,而非 Cuttlefish 系統映像檔。這項機制有以下好處:

  • 早期開發和測試:在實體硬體推出前,即可使用 CHD 進行新一代系統軟體的早期開發和測試。

  • 擴充性:CHD 可讓您更輕鬆地擴充開發和測試容量。

建立 CHD 映像檔

如要建立 CHD 映像檔,請按照下列步驟操作:

  1. 使用 make dist,為供應商目標和實體裝置產生目標檔案。使用下列任一選項產生供應商目標檔案:

  2. 將這兩個目標檔案合併為一個 CHD 目標檔案,然後執行 build_cf_hybrid_device.py 指令碼,從 CHD 目標檔案產生 CHD 映像檔。這個指令碼會使用 merge_target_files.py 將兩個目標檔案合併為一個 CHD 目標檔案,並使用 img_from_target_files 從 CHD 目標檔案產生 CHD 映像檔。

    python3 tools/treble/cuttlefish/build_cf_hybrid_device.py \
      --framework_target_files_zip <physical_device_target_files.zip> \
      --vendor_target_files_zip <cuttlefish_device_target_files.zip> \
      --otatools_zip <cuttlefish_otatools.zip> \
      --target chd \
      --output_dir <output_directory>
    

建立 Cuttlefish 供應商目標

您可以使用 aosp_cf_vendor.mk 定義 aosp_cf_arm64_phone_vendor 目標,並將其做為 CHD 圖片的供應商目標檔案。

如要建立僅限供應商的 Cuttlefish 目標,請按照下列步驟操作:

  1. 繼承會建構完整構件的 Cuttlefish 目標:

    $(call inherit-product, device/google/cuttlefish/vsoc_arm64/phone/aosp_cf.mk)
    
  2. 定義目標名稱:

    PRODUCT_NAME := aosp_cf_arm64_phone_vendor
    
  3. 從完整構件中停用不必要的建構作業:

    PRODUCT_BUILD_SYSTEM_IMAGE := false
    PRODUCT_BUILD_SYSTEM_OTHER_IMAGE := false
    PRODUCT_BUILD_PRODUCT_IMAGE := false
    PRODUCT_BUILD_SYSTEM_EXT_IMAGE := false
    PRODUCT_BUILD_SUPER_PARTITION := false
    TARGET_SKIP_OTA_PACKAGE := true
    

選擇要啟動 CHD 的主機環境

如要設定可擴充的主機環境,以便啟動及管理以 ARM64 為基礎的 CHD,請根據您的工作流程選擇設定:

  • Google Cloud C4A 裸機 (建議): Google Cloud C4A 裸機執行個體 (例如 c4a-standard-96-metalc4a-highmem-96-metal) 提供由 Google Axion 處理器驅動的原生 ARM64 KVM 硬體加速功能。這項設定可在雲端為 ARM64 CHD 提供高效能、高度可擴充的執行作業,且不會產生巢狀虛擬化負擔。此外,OmniLab ATS Cloud Orchestration 會與 c4a-metal 整合,自動分配裝置、協調測試,以及管理基礎架構。

  • 手動設定主機或地端部署 (替代做法):如果您在自訂本機或實驗室 ARM 硬體上執行,或手動設定主機環境 (不使用 OmniLab ATS),請參閱「在地端部署伺服器上執行 Cuttlefish」。