Cuttlefish-Hybridgerät erstellen

Auf dieser Seite wird beschrieben, wie Sie ein Cuttlefish-Hybridgerät (CHD) erstellen.

Ein CHD ist ein hybrides virtuelles Cuttlefish-Gerät, auf dem das System-Image eines physischen Geräts anstelle eines Cuttlefish-System-Image auf den HALs des Geräts ausgeführt wird. Das bietet folgende Vorteile:

  • Frühe Entwicklung und Tests:Mit CHDs können Sie Systemsoftware der nächsten Generation frühzeitig entwickeln und testen, bevor die physische Hardware verfügbar ist.

  • Skalierbarkeit:CHDs erleichtern die Erweiterung der Entwicklungs- und Testkapazität.

CHD-Image erstellen

So erstellen Sie ein CHD-Image:

  1. Generieren Sie die Zieldateien für das Anbieterziel und das physische Gerät mit make dist. Generieren Sie die Vendor-Zieldateien mit einer der folgenden Optionen:

    • Ein vorhandenes vollständiges Cuttlefish-Ziel
    • Ein Cuttlefish-Ziel, das nur Cuttlefish-Anbieterdateien erstellt. Weitere Informationen finden Sie unter Cuttlefish-Anbieterziel erstellen.
  2. Kombinieren Sie die beiden Zieldateien in einer CHD-Zieldatei und generieren Sie die CHD-Bilder aus der CHD-Zieldatei, indem Sie das Skript build_cf_hybrid_device.py ausführen. In diesem Skript werden die beiden Zieldateien mit merge_target_files.py in eine CHD-Zieldatei kombiniert und die CHD-Images werden mit img_from_target_files aus der CHD-Zieldatei generiert.

    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>
    

Cuttlefish-Anbieterziel erstellen

Mit aosp_cf_vendor.mk können Sie das aosp_cf_arm64_phone_vendor-Ziel definieren, das Sie als Anbieterzieldatei für ein CHD-Image verwenden können.

So erstellen Sie ein reines Cuttlefish-Anbieterziel:

  1. Übernehmen Sie das Cuttlefish-Ziel, das vollständige Artefakte erstellt:

    $(call inherit-product, device/google/cuttlefish/vsoc_arm64/phone/aosp_cf.mk)
    
  2. Zielname definieren:

    PRODUCT_NAME := aosp_cf_arm64_phone_vendor
    
  3. Deaktivieren Sie unnötige Builds aus den vollständigen Artefakten:

    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
    

Hostumgebung für den Start eines CHD auswählen

Wenn Sie eine skalierbare Hostumgebung zum Starten und Verwalten von ARM64-basierten CHDs einrichten möchten, wählen Sie eine Einrichtung basierend auf Ihrem Workflow aus:

  • Google Cloud C4A Bare Metal (empfohlen):Google Cloud C4A Bare Metal-Instanzen wie c4a-standard-96-metal oder c4a-highmem-96-metal bieten native ARM64-KVM-Hardwarebeschleunigung, die von Google Axion-Prozessoren unterstützt wird. Diese Einrichtung bietet eine leistungsstarke, hochgradig skalierbare Ausführung für ARM64-CHDs in der Cloud ohne den Overhead der verschachtelten Virtualisierung. Außerdem lässt sich OmniLab ATS Cloud Orchestration in c4a-metal einbinden, um die Gerätezuweisung, die Testorchestrierung und die Infrastrukturverwaltung zu automatisieren.

  • Manuelle Host- oder lokale Einrichtung (alternativ): Wenn Sie benutzerdefinierte lokale oder Lab-ARM-Hardware verwenden oder eine Hostumgebung ohne OmniLab ATS manuell konfigurieren, lesen Sie Cuttlefish auf einem lokalen Server ausführen.