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.
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, }
Damit der Cuttlefish-Launcher die
big_phone
-Konfiguration starten kann, muss er Zugriff auf die Dateidevice/google/cuttlefish/shared/config/config_big_phone.json
haben. Gehen Sie dazu so vor:Deklarieren Sie das JSON-Artefakt als Build-Artefakt, indem Sie die Stanza
prebuilt_etc_host
in die Dateidevice/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", }
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)
Erstellen Sie eine
android_info.txt
-Datei und verknüpfen Sie diebig_phone
-Konfiguration mit der Datei. Fügen Sie dazu die folgende Zeile indevice/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
Kennzeichnen Sie den Gerätetyp mit der Konfiguration
big_phone
. Geben Sie dazu indevice/google/cuttlefish/vsoc_x86_64/big_phone/android-info.txt
Folgendes ein:config=big_phone