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 de Cuttlefish en los HAL del dispositivo. Esto ofrece las siguientes ventajas:

  • Desarrollo y pruebas anticipados: Los CHD permiten el desarrollo y las pruebas anticipados 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.

Cómo crear una imagen CHD

Para crear una imagen 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 CHD y genera las imágenes CHD a partir del archivo de destino CHD ejecutando la secuencia de comandos build_cf_hybrid_device.py. Esta secuencia de comandos combina los dos archivos de destino en un archivo de destino CHD con merge_target_files.py y genera las imágenes CHD a partir del archivo de destino 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

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

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

  1. Hereda el destino de 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