Cómo crear un dispositivo híbrido Cuttlefish

En esta página, se describe cómo crear un dispositivo híbrido Cuttlefish (CHD).

Un CHD es un dispositivo Cuttlefish virtual híbrido que ejecuta la imagen del sistema de un dispositivo físico en lugar de una imagen del sistema Cuttlefish en los HAL del dispositivo. Esto ofrece las siguientes ventajas:

  • Desarrollo y pruebas tempranos: Los CHD permiten el desarrollo y las pruebas tempranos del software del sistema de próxima generación antes de que esté disponible el hardware físico.

  • Escalabilidad: Los CHD facilitan la expansión de la capacidad de desarrollo y pruebas.

Crea una imagen de CHD

Para crear una imagen de CHD, sigue estos pasos:

  1. Genera los archivos de destino para el destino del proveedor y el dispositivo físico con make dist. Genera los archivos de destino del proveedor con una de las siguientes opciones:

  2. Combina los dos archivos de destino en un archivo de destino de CHD y genera las imágenes de CHD a partir del archivo de destino de CHD ejecutando la build_cf_hybrid_device.py secuencia de comandos. Esta secuencia de comandos combina los dos archivos de destino en un archivo de destino de CHD con merge_target_files.py y genera las imágenes de CHD a partir del archivo de destino de CHD con img_from_target_files.

    python3 tools/treble/cuttlefish/build_cf_hybrid_device.py \
      --framework_target_files_zip <physical_device_target_files.zip> \
      --vendor_target_files_zip <cuttlefish_device_target_files.zip> \
      --otatools_zip <cuttlefish_otatools.zip> \
      --target chd \
      --output_dir <output_directory>
    

Crea un destino de proveedor de Cuttlefish

Para crear un destino solo para proveedores de Cuttlefish, sigue estos pasos:

Puedes usar aosp_cf_vendor.mk para definir el aosp_cf_arm64_phone_vendor destino, que puedes usar como archivo de destino del proveedor para una imagen de CHD.

  1. Hereda el destino Cuttlefish que compila artefactos completos.

    $(call inherit-product, device/google/cuttlefish/vsoc_arm64/phone/aosp_cf.mk)
    
  2. Define el nombre del destino.

    PRODUCT_NAME := aosp_cf_arm64_phone_vendor
    
  3. Inhabilita las compilaciones innecesarias de los artefactos completos.

    PRODUCT_BUILD_SYSTEM_IMAGE := false
    PRODUCT_BUILD_SYSTEM_OTHER_IMAGE := false
    PRODUCT_BUILD_PRODUCT_IMAGE := false
    PRODUCT_BUILD_SYSTEM_EXT_IMAGE := false
    PRODUCT_BUILD_SUPER_PARTITION := false
    TARGET_SKIP_OTA_PACKAGE := true