Creare un dispositivo ibrida Cuttlefish

Questa pagina descrive come creare un dispositivo ibrido Cuttlefish (CHD).

Un CHD è un dispositivo Cuttlefish virtuale ibrido che esegue l'immagine di sistema di un dispositivo fisico anziché un'immagine di sistema Cuttlefish sugli HAL del dispositivo. Questa opzione offre i seguenti vantaggi:

  • Sviluppo e test iniziali: i CHD consentono lo sviluppo e il test iniziali del software di sistema di nuova generazione prima che l'hardware fisico sia disponibile.

  • Scalabilità: i CHD facilitano l'espansione della capacità di sviluppo e test.

Crea un'immagine CHD

Per creare un'immagine CHD:

  1. Genera i file di destinazione per il target fornitore e il dispositivo fisico utilizzando make dist. Genera i file di destinazione del fornitore utilizzando una delle seguenti opzioni:

  2. Combina i due file di destinazione in un file di destinazione CHD e genera le immagini CHD dal file di destinazione CHD eseguendo lo script build_cf_hybrid_device.py. Questo script combina i due file di destinazione in un file di destinazione CHD utilizzando merge_target_files.py e genera le immagini CHD dal file di destinazione CHD utilizzando 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 target fornitore Cuttlefish

Puoi utilizzare aosp_cf_vendor.mk per definire il target aosp_cf_arm64_phone_vendor, che puoi utilizzare come file target del fornitore per un'immagine CHD.

Per creare un target solo fornitore Cuttlefish:

  1. Eredita la destinazione Cuttlefish che crea artefatti completi:

    $(call inherit-product, device/google/cuttlefish/vsoc_arm64/phone/aosp_cf.mk)
    
  2. Definisci il nome del target:

    PRODUCT_NAME := aosp_cf_arm64_phone_vendor
    
  3. Disattiva le build non necessarie dagli artefatti completi:

    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
    

Scegliere un ambiente host per avviare un CHD

Per configurare un ambiente host scalabile per l'avvio e la gestione di CHD basati su ARM64, scegli una configurazione in base al tuo flusso di lavoro:

  • Bare Metal Google Cloud C4A (consigliato): le istanze Bare Metal Google Cloud C4A, come c4a-standard-96-metal o c4a-highmem-96-metal, forniscono l'accelerazione hardware KVM ARM64 nativa basata sui processori Google Axion. Questa configurazione offre un'esecuzione ad alte prestazioni e altamente scalabile per i file CHD ARM64 nel cloud senza sovraccarico di virtualizzazione nidificata. Inoltre, OmniLab ATS Cloud Orchestration si integra con c4a-metal per automatizzare l'allocazione dei dispositivi, l'orchestrazione dei test e la gestione dell'infrastruttura.

  • Configurazione manuale dell'host o on-premise (alternativa): se esegui l'hardware ARM locale o di laboratorio personalizzato o se configuri manualmente un ambiente host senza OmniLab ATS, consulta Esegui Cuttlefish su un server on-premise.