Seppia: crea un dispositivo personalizzato

Questa pagina descrive come creare un dispositivo Cuttlefish personalizzato. Cuttlefish include tipi di dispositivi predefiniti in diversi fattori di forma elencati in AndroidProducts.mk . Oltre alle opzioni generali di personalizzazione del dispositivo descritte in Aggiunta di un nuovo dispositivo , è possibile effettuare personalizzazioni specifiche di Cuttlefish come preimpostazioni di configurazione della scheda del dispositivo virtuale (vsoc_x88_64, vsoc_arm64, vsoc_riscv64), kernel predefiniti, bootloader predefiniti, proprietà del fornitore, configurazioni di sistema, impostazioni nidificate supporto per la virtualizzazione e opzioni di visualizzazione. Per un elenco completo dei parametri del tempo di creazione che possono essere personalizzati, vedere device/google/cuttlefish/vsoc_x86_64/phone/aosp_cf.mk .

I passaggi seguenti descrivono come creare un dispositivo big_phone x86-64 fittizio dieci volte più grande di un normale dispositivo Cuttlefish.

Eredita da una destinazione esistente

Per ereditare da una destinazione esistente:

  • Crea una directory device/google/cuttlefish/vsoc_x86_64/ big_phone .
  • Crea un file aosp_cf.mk in quella 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)

Aggiungi un obiettivo per il pranzo

Inserisci la destinazione 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

Definire la configurazione JSON

Per avviare il dispositivo Cuttlefish, crea un file di configurazione JSON denominato big_phone .json con una struttura gerarchica che rappresenta 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 nell'albero AOSP. Per dettagli sul formato JSON per le configurazioni, consulta Configurazioni canoniche .

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

Per avviare la configurazione, eseguire:

cvd start --config_file=big_phone.json

Esegui launch_cvd (legacy)

Alcune proprietà di configurazione non sono disponibili nel formato di configurazione JSON gerarchico. Per tali configurazioni, puoi impostare i valori predefiniti del flag launch_cvd da un dizionario JSON a livello singolo. Per un elenco completo di tutte le opzioni di configurazione, vedere cf_flags_validator.cpp .

Di seguito viene descritto un esempio di come sovrascrivere i valori predefiniti delle opzioni del flag launch_cvd utilizzando un file di configurazione JSON e abilitare il launcher Cuttlefish per avviare la configurazione personalizzata.

  1. 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,
    }
    
  2. Affinché il launcher Cuttlefish possa avviare la configurazione big_phone , assicurati che abbia accesso al device/google/cuttlefish/shared/config/config_ big_phone .json procedendo come segue:

    1. Dichiara l'artefatto JSON come artefatto di build aggiungendo la stanza prebuilt_etc_host nel device/google/cuttlefish/shared/config/Android.bp .

      prebuilt_etc_host {
          name: "cvd_config_big_phone.json",
          src: "config_big_phone.json",
          sub_dir: "cvd_config",
      }
      
    2. Aggiungi la dichiarazione dell'artefatto di build risultante nel launcher Cuttlefish eseguendo quanto segue in device/google/cuttlefish/shared/device.mk .

      $(call soong_config_append,cvd,launch_configs,cvd_config_big_phone)
      
    3. Crea un file android_info.txt e collega la configurazione big_phone al file aggiungendo la seguente riga a device/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
      
    4. Etichetta il tipo di dispositivo con la configurazione big_phone popolando device/google/cuttlefish/vsoc_x86_64/ big_phone /android-info.txt con quanto segue:

      config=big_phone