Seppia: creare un dispositivo personalizzato

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 di personalizzazione generale del dispositivo descritte in Aggiunta di un nuovo dispositivo, puoi apportare personalizzazioni specifiche di Cuttlefish, come preset di configurazione della scheda del dispositivo virtuale (vsoc_x86_64, vsoc_arm64, vsoc_riscv64), precompilati del kernel, precompilati del bootloader, proprietà del fornitore, configurazioni di sistema, supporto della virtualizzazione nidificata e opzioni di visualizzazione. Per un elenco completo dei parametri di compilazione che possono essere personalizzati, consulta device/google/cuttlefish/vsoc_x86_64/phone/aosp_cf.mk.

I passaggi riportati di seguito descrivono come creare un dispositivo x86-64big_phone immaginario di dimensioni dieci volte superiori a quelle di un normale dispositivo Cuttlefish.

Eredita 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 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 il target lunch nel device/google/cuttlefish/AndroidProducts.mk file:

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 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 dell'esposizione. Questo file non deve trovarsi nella struttura AOSP. Per maggiori 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, 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 livello. Per un elenco completo di tutte le opzioni di configurazione, consulta cf_flags_validator.cpp.

Di seguito è riportato un esempio di come ignorare i valori predefiniti delle opzioni del flag launch_cvd utilizzando un file di configurazione JSON e consentire al programma di avvio Cuttlefish di 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 programma di lancio Cuttlefish possa avviare la configurazione big_phone, assicurati che abbia accesso al file device/google/cuttlefish/shared/config/config_big_phone.json:

    1. Dichiara l'elemento JSON come artefatto di compilazione aggiungendo la stanza prebuilt_etc_host nel file 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'elemento risultante della compilazione al programma di lancio di 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 associa 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 compilando device/google/cuttlefish/vsoc_x86_64/big_phone/android-info.txt con quanto segue:

      config=big_phone