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 los valores predeterminados de configuración de la placa del dispositivo virtual (vsoc_x86_64, vsoc_arm64, vsoc_riscv64), las versiones precompiladas del kernel, las versiones precompiladas del cargador de arranque, las propiedades del proveedor, las configuraciones del sistema, la compatibilidad con la virtualización anidada
y las 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 dispositivo big_phone ficticio x86-64 diez veces más grande que un dispositivo Cuttlefish común.
Heredar de un objetivo existente
Para heredar de un objetivo existente, haz lo siguiente:
- Crea un
device/google/cuttlefish/vsoc_x86_64/big_phonedirectorio. - Crea un archivo
aosp_cf.mken 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_phoneDefinir 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 a 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 para 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 lo siguiente:
cvd create --config_file=big_phone.jsonEjecutar launch_cvd (heredado)
Ciertas propiedades de configuración no están disponibles en el formato de configuración JSON jerárquico. Para esas configuraciones, puedes establecer valores predeterminados de 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
launch_cvd opciones de marca
con 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
big_phone, asegúrate de que tenga acceso aldevice/google/cuttlefish/shared/config/config_big_phone.jsonarchivo. Para ello, haz lo siguiente:Declara el artefacto JSON como un artefacto de compilación agregando la sección
prebuilt_etc_hosten 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", }Agrega la declaración del artefacto de compilación resultante al selector de Cuttlefish 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.txty vincula la configuraciónbig_phoneal archivo agregando 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.txtEtiqueta el tipo de dispositivo con la configuración
big_phonepropagandodevice/google/cuttlefish/vsoc_x86_64/big_phone/android-info.txtcon lo siguiente:config=big_phone