Questa pagina descrive come creare un dispositivo Cuttlefish personalizzato. Cuttlefish
include tipi di dispositivi predefiniti in diversi fattori di forma, come elencato in
AndroidProducts.mk
. Oltre alle opzioni generali di personalizzazione del dispositivo descritte in Aggiunta di un nuovo dispositivo, puoi apportare personalizzazioni specifiche di Cuttlefish, come i preset di configurazione della scheda del dispositivo virtuale (vsoc_x86_64, vsoc_arm64, vsoc_riscv64), i prebuilt del kernel, i prebuilt del bootloader, le proprietà del fornitore, le configurazioni di sistema, il supporto della virtualizzazione nidificata e le opzioni di visualizzazione. Per un elenco completo dei
parametri del tempo di compilazione che possono essere personalizzati, consulta
device/google/cuttlefish/vsoc_x86_64/phone/aosp_cf.mk
.
I seguenti passaggi descrivono come creare un dispositivo x86-64
big_phone
fittizio dieci volte più grande di un normale
dispositivo Cuttlefish.
Ereditare da un target esistente
Per ereditare da un target esistente:
- Crea una directory
device/google/cuttlefish/vsoc_x86_64/big_phone
. - Crea un file
aosp_cf.mk
in questa directory.
$(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)
Aggiungere un obiettivo per il pranzo
Inserisci il target lunch
nel file
device/google/cuttlefish/AndroidProducts.mk
:
PRODUCT_MAKEFILES := \
...
big_phone:$(LOCAL_DIR)/vsoc_x86_64/big_phone/aosp_cf.mk
...
lunch big_phone
Definisci la configurazione JSON
Per avviare il dispositivo Cuttlefish, crea un file di configurazione JSON denominato
big_phone.json
con una struttura gerarchica che rappresenti
le proprietà del dispositivo. Ad esempio, nel file di configurazione JSON puoi specificare opzioni come la RAM allocata per la VM e la configurazione del display. Questo file non deve trovarsi nella struttura AOSP.
Per i dettagli sul formato JSON per le configurazioni, vedi
Configurazioni canoniche.
{
"instances":
[
{
"vm": {
"memory_mb": 40960,
},
"graphics": {
"displays": [
{
"width": 7200,
"height": 12800,
"dpi": 320
}
]
}
}
]
}
Per avviare la configurazione, esegui:
cvd create --config_file=big_phone.json
Esegui launch_cvd (legacy)
Alcune proprietà di configurazione non sono disponibili nel formato di configurazione JSON gerarchico. Per queste configurazioni, puoi impostare i valori predefiniti del flag launch_cvd
da un dizionario JSON a un solo livello. Per un elenco completo di tutte le opzioni di configurazione, consulta cf_flags_validator.cpp
.
Di seguito viene descritto un esempio di come eseguire l'override dei valori predefiniti delle
opzioni del flag launch_cvd
utilizzando un file di configurazione JSON e attivare l'avvio di Cuttlefish per avviare la
configurazione personalizzata.
Crea un file di configurazione JSON,
device/google/cuttlefish/shared/config/config_big_phone.json
, con valori personalizzati.{ "x_res": 7200, "y_res": 12800, "dpi": 320, "memory_mb": 40960, "ddr_mem_mb": 49150, }
Affinché il launcher Cuttlefish avvii la configurazione
big_phone
, assicurati che abbia accesso al filedevice/google/cuttlefish/shared/config/config_big_phone.json
nel seguente modo:Dichiara l'artefatto JSON come artefatto di build aggiungendo la sezione
prebuilt_etc_host
nel filedevice/google/cuttlefish/shared/config/Android.bp
.prebuilt_etc_host { name: "cvd_config_big_phone.json", src: "config_big_phone.json", sub_dir: "cvd_config", }
Aggiungi la dichiarazione dell'artefatto di build risultante al launcher Cuttlefish eseguendo il seguente comando in
device/google/cuttlefish/shared/device.mk
.$(call soong_config_append,cvd,launch_configs,cvd_config_big_phone)
Crea un file
android_info.txt
e collega la configurazionebig_phone
al file aggiungendo la seguente riga adevice/google/cuttlefish/vsoc_x86_64/big_phone/aosp_cf.mk
:TARGET_BOARD_INFO_FILE := device/google/cuttlefish/vsoc_x86_64/<var>big_phone</var>/android-info.txt
Etichetta il tipo di dispositivo con la configurazione
big_phone
compilandodevice/google/cuttlefish/vsoc_x86_64/big_phone/android-info.txt
con quanto segue:config=big_phone