Sepia: Crea un dispositivo personalizado

Esta página describe cómo crear un dispositivo Cuttlefish personalizado. Cuttlefish incluye tipos de dispositivos predefinidos en diferentes factores de forma como se enumeran en AndroidProducts.mk . Además de las opciones generales de personalización del dispositivo descritas en Agregar un nuevo dispositivo , puede realizar personalizaciones específicas de Cuttlefish, como ajustes preestablecidos de configuración de la placa de dispositivo virtual (vsoc_x88_64, vsoc_arm64, vsoc_riscv64), precompilados del kernel, precompilados del cargador de arranque, propiedades del proveedor, configuraciones del sistema, anidados. soporte de virtualización y opciones de visualización. Para obtener una lista completa de los parámetros de tiempo de compilación que se pueden personalizar, consulte device/google/cuttlefish/vsoc_x86_64/phone/aosp_cf.mk .

Los siguientes pasos describen cómo crear un dispositivo ficticio x86-64 big_phone diez veces el tamaño de un dispositivo Cuttlefish normal.

Heredar de un objetivo existente

Para heredar de un objetivo existente:

  • Cree un directorio device/google/cuttlefish/vsoc_x86_64/ big_phone .
  • Cree un archivo aosp_cf.mk en ese directorio.
$(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)

Agregar un objetivo de almuerzo

Inserta el objetivo lunch en el archivo device/google/cuttlefish/AndroidProducts.mk :

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

Definir la configuración JSON

Para iniciar el dispositivo Cuttlefish, cree un archivo de configuración JSON llamado big_phone .json con una estructura jerárquica que represente las propiedades del dispositivo. Por ejemplo, en el archivo de configuración JSON, puede especificar opciones como la RAM asignada para la VM y la configuración de pantalla. Este archivo no tiene que estar en el árbol AOSP. Para obtener detalles sobre el formato JSON para las configuraciones, consulte Configuraciones canónicas .

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

Para iniciar la configuración, ejecute:

cvd start --config_file=big_phone.json

Ejecute launch_cvd (heredado)

Ciertas propiedades de configuración no están disponibles en el formato de configuración JSON jerárquico. Para tales configuraciones, puede establecer los valores predeterminados del indicador launch_cvd desde un diccionario JSON de un solo nivel. Para obtener una lista completa de todas las opciones de configuración, consulte cf_flags_validator.cpp .

A continuación se describe un ejemplo de cómo anular los valores predeterminados de las opciones del indicador launch_cvd usando un archivo de configuración JSON y habilitar el iniciador Cuttlefish para iniciar la configuración personalizada.

  1. Cree un archivo de configuración JSON, device/google/cuttlefish/shared/config/config_ big_phone .json , con valores personalizados.

    {
      "x_res": 7200,
      "y_res": 12800,
      "dpi": 320,
      "memory_mb": 40960,
      "ddr_mem_mb": 49150,
    }
    
  2. Para que el iniciador de Cuttlefish inicie la configuración big_phone , asegúrese de que tenga acceso al archivo device/google/cuttlefish/shared/config/config_ big_phone .json haciendo lo siguiente:

    1. Declare el artefacto JSON como un artefacto de compilación agregando la sección prebuilt_etc_host en el archivo device/google/cuttlefish/shared/config/Android.bp .

      prebuilt_etc_host {
          name: "cvd_config_big_phone.json",
          src: "config_big_phone.json",
          sub_dir: "cvd_config",
      }
      
    2. Agregue la declaración de artefacto de compilación resultante al iniciador de Cuttlefish ejecutando lo siguiente en device/google/cuttlefish/shared/device.mk .

      $(call soong_config_append,cvd,launch_configs,cvd_config_big_phone)
      
    3. Cree un archivo android_info.txt y vincule la configuración de big_phone al archivo agregando la siguiente línea a device/google/cuttlefish/vsoc_x86_64/ big_phone /aosp_cf.mk :

      TARGET_BOARD_INFO_FILE := device/google/cuttlefish/vsoc_x86_64/<var>big_phone</var>/android-info.txt
      
    4. Etiquete el tipo de dispositivo con la configuración de big_phone completando device/google/cuttlefish/vsoc_x86_64/ big_phone /android-info.txt con lo siguiente:

      config=big_phone