Cuttlefish:創建自訂設備

本頁介紹如何建立客製化的 Cuttlefish 裝置。 Cuttlefish 包括AndroidProducts.mk中列出的不同外形尺寸的預定義設備類型。除了新增裝置中所述的常規裝置自訂選項外,您還可以進行Cuttlefish 特定的自訂,例如虛擬裝置板配置預設(vsoc_x88_64、vsoc_arm64、vsoc_riscv64)、核心預先建置、引導程式預先建置、供應商屬性、系統配置、嵌套虛擬化支援和顯示選項。有關可自訂的建置時參數的完整列表,請參閱device/google/cuttlefish/vsoc_x86_64/phone/aosp_cf.mk

以下步驟說明如何創造一個虛構的 x86-64 big_phone設備,其大小是普通 Cuttlefish 設備的十倍。

從現有目標繼承

從現有目標繼承:

  • 建立device/google/cuttlefish/vsoc_x86_64/ big_phone目錄。
  • 在該目錄中建立aosp_cf.mk檔案。
$(call inherit-product, device/google/cuttlefish/vsoc_x86_64_phone.mk)

PRODUCT_NAME: big_phone
PRODUCT_DEVICE: vsoc_x86_64
PRODUCT_MANUFACTURER := My Company
PRODUCT_MODEL: My Company very large phone

PRODUCT_VENDOR_PROPERTIES += \
    ro.soc.manufacturer=$(PRODUCT_MANUFACTURER) \
    ro.soc.model=$(PRODUCT_DEVICE)

新增午餐目標

lunch目標插入device/google/cuttlefish/AndroidProducts.mk檔:

PRODUCT_MAKEFILES := \
  ...
  big_phone:$(LOCAL_DIR)/vsoc_x86_64/big_phone/aosp_cf.mk
  ...
lunch big_phone

定義 JSON 配置

要啟動 Cuttlefish 設備,請建立一個名為big_phone .json的 JSON 配置文件,其中包含表示設備屬性的分層結構。例如,在 JSON 設定檔中,您可以指定為 VM 指派的 RAM 和顯示配置等選項。該文件不必位於 AOSP 樹中。有關配置的 JSON 格式的詳細信息,請參閱規範配置

{
  "instances":
      [
        {
          "vm": {
            "memory_mb": 40960,
          },
          "graphics": {
            "displays": [
              {
                "width": 7200,
                "height": 12800,
                "dpi": 320
              }
            ]
          }
        }
      ]
}

若要啟動配置,請執行:

cvd start --config_file=big_phone.json

運行 launch_cvd(舊版)

某些組態屬性在分層 JSON 配置格式中不可用。對於此類配置,您可以從單級 JSON 字典設定launch_cvd標誌預設值。有關所有配置選項的完整列表,請參閱cf_flags_validator.cpp

以下介紹如何使用 JSON 設定檔覆蓋launch_cvd標誌選項的預設值並使 Cuttlefish 啟動器啟動自訂配置的範例。

  1. 使用自訂值建立 JSON 設定檔device/google/cuttlefish/shared/config/config_ big_phone .json

    {
      "x_res": 7200,
      "y_res": 12800,
      "dpi": 320,
      "memory_mb": 40960,
      "ddr_mem_mb": 49150,
    }
    
  2. 要讓 Cuttlefish 啟動器啟動big_phone配置,請透過執行以下操作確保它可以存取device/google/cuttlefish/shared/config/config_ big_phone .json檔案:

    1. 透過在device/google/cuttlefish/shared/config/Android.bp檔案中新增prebuilt_etc_host節,將 JSON 工件宣告為建置工件。

      prebuilt_etc_host {
          name: "cvd_config_big_phone.json",
          src: "config_big_phone.json",
          sub_dir: "cvd_config",
      }
      
    2. 透過在device/google/cuttlefish/shared/device.mk中執行以下命令,將產生的建置工件宣告新增至 Cuttlefish 啟動器。

      $(call soong_config_append,cvd,launch_configs,cvd_config_big_phone)
      
    3. 建立android_info.txt文件,並將以下行新增至device/google/cuttlefish/vsoc_x86_64/ big_phone /aosp_cf.mk ,將big_phone配置綁定到該檔案:

      TARGET_BOARD_INFO_FILE := device/google/cuttlefish/vsoc_x86_64/<var>big_phone</var>/android-info.txt
      
    4. 透過使用以下內容填入device/google/cuttlefish/vsoc_x86_64/ big_phone /android-info.txt使用big_phone配置標記裝置類型:

      config=big_phone