Sepien: Benutzerdefiniertes Gerät erstellen

Auf dieser Seite wird beschrieben, wie Sie ein benutzerdefiniertes Cuttlefish-Gerät erstellen. Cuttlefish enthält vordefinierte Gerätetypen in verschiedenen Formfaktoren, wie in AndroidProducts.mk aufgeführt. Zusätzlich zu den allgemeinen Optionen zur Geräteanpassung, die unter Neues Gerät hinzufügen beschrieben werden, können Sie Cuttlefish-spezifische Anpassungen vornehmen, z. B. Konfigurationsvorlagen für virtuelle Geräteplatinen (vsoc_x88_64, vsoc_arm64, vsoc_riscv64), vorkonfigurierte Kernel, vorkonfigurierte Bootloader, Anbietereigenschaften, Systemkonfigurationen, Unterstützung für verschachtelte Virtualisierung und Anzeigeoptionen. Eine vollständige Liste der Parameter für die Build-Zeit, die angepasst werden können, finden Sie unter device/google/cuttlefish/vsoc_x86_64/phone/aosp_cf.mk.

In den folgenden Schritten wird beschrieben, wie Sie ein fiktives x86-64-big_phone-Gerät erstellen, das zehnmal so groß ist wie ein gewöhnliches Tintenfischgerät.

Von einem vorhandenen Ziel übernehmen

So übernehmen Sie ein vorhandenes Ziel:

  • Erstellen Sie ein device/google/cuttlefish/vsoc_x86_64/big_phone-Verzeichnis.
  • Erstellen Sie in diesem Verzeichnis eine aosp_cf.mk-Datei.
$(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)

Ziel für Mittagessen hinzufügen

Fügen Sie das Ziel lunch in die Datei device/google/cuttlefish/AndroidProducts.mk ein:

PRODUCT_MAKEFILES := \
  ...
  big_phone:$(LOCAL_DIR)/vsoc_x86_64/big_phone/aosp_cf.mk
  ...
lunch big_phone

JSON-Konfiguration definieren

Wenn Sie das Cuttlefish-Gerät starten möchten, erstellen Sie eine JSON-Konfigurationsdatei mit dem Namen big_phone.json mit einer hierarchischen Struktur, die die Geräteeigenschaften darstellt. In der JSON-Konfigurationsdatei können Sie beispielsweise Optionen wie den der VM zugewiesenen RAM und die Anzeigekonfiguration angeben. Diese Datei muss sich nicht im AOSP-Baum befinden. Weitere Informationen zum JSON-Format für Konfigurationen finden Sie unter Kanonische Konfigurationen.

{
  "instances":
      [
        {
          "vm": {
            "memory_mb": 40960,
          },
          "graphics": {
            "displays": [
              {
                "width": 7200,
                "height": 12800,
                "dpi": 320
              }
            ]
          }
        }
      ]
}

Führen Sie zum Starten der Konfiguration Folgendes aus:

cvd create --config_file=big_phone.json

launch_cvd (alt) ausführen

Bestimmte Konfigurationsattribute sind im hierarchischen JSON-Konfigurationsformat nicht verfügbar. Für solche Konfigurationen können Sie Standardwerte für die launch_cvd-Flag aus einem JSON-Wörterbuch mit einer Ebene festlegen. Eine vollständige Liste aller Konfigurationsoptionen finden Sie unter cf_flags_validator.cpp.

Im Folgenden wird ein Beispiel beschrieben, wie Sie die Standardwerte der launch_cvd-Flag-Optionen mit einer JSON-Konfigurationsdatei überschreiben und dem Cuttlefish-Launcher das Starten der benutzerdefinierten Konfiguration ermöglichen.

  1. Erstellen Sie die JSON-Konfigurationsdatei device/google/cuttlefish/shared/config/config_big_phone.json mit benutzerdefinierten Werten.

    {
      "x_res": 7200,
      "y_res": 12800,
      "dpi": 320,
      "memory_mb": 40960,
      "ddr_mem_mb": 49150,
    }
    
  2. Damit der Cuttlefish-Launcher die big_phone-Konfiguration starten kann, muss er Zugriff auf die Datei device/google/cuttlefish/shared/config/config_big_phone.json haben. Gehen Sie dazu so vor:

    1. Deklarieren Sie das JSON-Artefakt als Build-Artefakt, indem Sie die Stanza prebuilt_etc_host in die Datei device/google/cuttlefish/shared/config/Android.bp einfügen.

      prebuilt_etc_host {
          name: "cvd_config_big_phone.json",
          src: "config_big_phone.json",
          sub_dir: "cvd_config",
      }
      
    2. Fügen Sie die resultierende Build-Artefaktdeklaration dem Cuttlefish-Launcher hinzu. Führen Sie dazu folgenden Befehl in device/google/cuttlefish/shared/device.mk aus.

      $(call soong_config_append,cvd,launch_configs,cvd_config_big_phone)
      
    3. Erstellen Sie eine android_info.txt-Datei und verknüpfen Sie die big_phone-Konfiguration mit der Datei. Fügen Sie dazu die folgende Zeile in device/google/cuttlefish/vsoc_x86_64/big_phone/aosp_cf.mk ein:

      TARGET_BOARD_INFO_FILE := device/google/cuttlefish/vsoc_x86_64/<var>big_phone</var>/android-info.txt
      
    4. Kennzeichnen Sie den Gerätetyp mit der Konfiguration big_phone. Geben Sie dazu in device/google/cuttlefish/vsoc_x86_64/big_phone/android-info.txt Folgendes ein:

      config=big_phone