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 la personalización general del dispositivo,
opciones descritas en
Agregando un nuevo dispositivo, puedes hacer
Personalizaciones específicas de Cuttlefish, como la placa de dispositivo virtual
ajustes predeterminados de configuración (vsoc_x88_64, vsoc_arm64, vsoc_riscv64), compilaciones previas del kernel,
bootloaders compilados previamente, propiedades del proveedor, configuraciones del sistema, datos anidados
asistencia 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, consulta
device/google/cuttlefish/vsoc_x86_64/phone/aosp_cf.mk
En los siguientes pasos, se describe cómo crear un x86-64 ficticio
big_phone
dispositivo diez veces el tamaño de un dispositivo común
dispositivo Cuttlefish.
Heredar de un destino existente
Para heredar de un destino existente, sigue estos pasos:
- Crea un
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)
Agregar un objetivo de almuerzo
Inserta el destino 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 representa
las propiedades del dispositivo. Por ejemplo, en el archivo de configuración JSON, puedes
especificar opciones, como la RAM asignada a la VM y la pantalla
configuración. No es necesario que este archivo esté en el árbol de AOSP.
Para obtener detalles sobre el formato JSON para la configuración, 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 start --config_file=big_phone.json
Ejecuta launch_cvd (heredado)
Algunas propiedades de configuración no están disponibles en el archivo JSON jerárquico
de configuración de Terraform. Para esas configuraciones, puedes establecer la marca launch_cvd
valores predeterminados de un diccionario JSON de un solo nivel. Para ver una lista completa
opciones de configuración, consulta
cf_flags_validator.cpp
A continuación, se muestra un ejemplo de cómo anular los valores predeterminados de la
Opciones de marcas de launch_cvd
con un archivo de configuración JSON y habilitar el selector de Cuttlefish para iniciar la
configuración personalizada.
Crear 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 acceso a ladevice/google/cuttlefish/shared/config/config_big_phone.json
de la siguiente manera:Para declarar el artefacto JSON como artefacto de compilación, agrega el elemento
prebuilt_etc_host
estrofa en 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", }
Agrega la declaración del artefacto de compilación resultante a Cuttlefish. selector ejecutando 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
a la agregando la siguiente línea al archivodevice/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
Propaga los datos para etiquetar el tipo de dispositivo con la configuración de
big_phone
.device/google/cuttlefish/vsoc_x86_64/big_phone/android-info.txt
con lo siguiente:config=big_phone