En esta página, se describe cómo crear un dispositivo Cuttlefish personalizado. Cuttlefish incluye tipos de dispositivos predefinidos en diferentes factores de forma, como se indica en AndroidProducts.mk
. Además de las opciones generales de personalización de dispositivos que se describen en Cómo agregar un dispositivo nuevo, puedes realizar personalizaciones específicas de Cuttlefish, como parámetros de configuración preestablecidos de la placa del dispositivo virtual (vsoc_x88_64, vsoc_arm64, vsoc_riscv64), compilaciones previas del kernel, compilaciones previas del bootloader, propiedades del proveedor, configuraciones del sistema, compatibilidad con la virtualización anidada y opciones de visualización. Para obtener una lista completa de los parámetros del tiempo de compilación que se pueden personalizar, consulta device/google/cuttlefish/vsoc_x86_64/phone/aosp_cf.mk
.
En los siguientes pasos, se describe cómo crear un dispositivo big_phone
ficticio x86-64 diez veces el tamaño de un dispositivo Cuttlefish común.
Heredar de un objetivo existente
Para heredar de un objetivo existente, sigue estos pasos:
- Crea un directorio
device/google/cuttlefish/vsoc_x86_64/big_phone
. - Crea 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)
Agrega 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
Define la configuración de JSON
Para iniciar el dispositivo Cuttlefish, crea 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, puedes especificar opciones como la RAM asignada para la VM y la configuración de la pantalla. Este archivo no tiene que estar en el árbol de AOSP.
Para obtener detalles sobre el formato JSON de las configuraciones, consulta Configuraciones canónicas.
{
"instances":
[
{
"vm": {
"memory_mb": 40960,
},
"graphics": {
"displays": [
{
"width": 7200,
"height": 12800,
"dpi": 320
}
]
}
}
]
}
Para iniciar la configuración, ejecuta el siguiente comando:
cvd create --config_file=big_phone.json
Ejecuta launch_cvd (heredado)
Algunas propiedades de configuración no están disponibles en el formato de configuración jerárquica en JSON. Para esas configuraciones, puedes establecer los valores predeterminados de la marca launch_cvd
desde un diccionario JSON de un solo nivel. Para obtener una lista completa de todas las opciones de configuración, consulta cf_flags_validator.cpp
.
A continuación, se describe un ejemplo de cómo anular los valores predeterminados de las opciones de marcas launch_cvd
usando un archivo de configuración JSON y habilitar el selector de Cuttlefish para iniciar la configuración personalizada.
Crea 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, }
Para que el selector de Cuttlefish inicie la configuración de
big_phone
, asegúrate de que tenga acceso al archivodevice/google/cuttlefish/shared/config/config_big_phone.json
. Para ello, haz lo siguiente:Para declarar el artefacto JSON como artefacto de compilación, agrega la estrofa
prebuilt_etc_host
en el archivodevice/google/cuttlefish/shared/config/Android.bp
.prebuilt_etc_host { name: "cvd_config_big_phone.json", src: "config_big_phone.json", sub_dir: "cvd_config", }
Para agregar la declaración del artefacto de compilación resultante al selector de Cuttlefish, ejecuta lo siguiente en
device/google/cuttlefish/shared/device.mk
.$(call soong_config_append,cvd,launch_configs,cvd_config_big_phone)
Crea un archivo
android_info.txt
y vincula la configuración debig_phone
al archivo. Para ello, agrega la siguiente línea adevice/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
Para etiquetar el tipo de dispositivo con la configuración de
big_phone
, propagadevice/google/cuttlefish/vsoc_x86_64/big_phone/android-info.txt
con la siguiente información:config=big_phone