Mątwa: utwórz niestandardowe urządzenie

Na tej stronie opisano, jak stworzyć spersonalizowane urządzenie mątwy. Mątwy obejmują predefiniowane typy urządzeń w różnych obudowach, wymienione w AndroidProducts.mk . Oprócz ogólnych opcji dostosowywania urządzenia opisanych w sekcji Dodawanie nowego urządzenia , możesz dokonać dostosowań specyficznych dla mątwy, takich jak wstępne ustawienia konfiguracji płyty urządzeń wirtualnych (vsoc_x88_64, vsoc_arm64, vsoc_riscv64), gotowe wersje jądra, gotowe wersje bootloadera, właściwości dostawcy, konfiguracje systemu, zagnieżdżone obsługa wirtualizacji i opcje wyświetlania. Pełną listę parametrów czasu kompilacji, które można dostosować, znajdziesz na device/google/cuttlefish/vsoc_x86_64/phone/aosp_cf.mk .

Poniższe kroki opisują, jak utworzyć fikcyjne urządzenie big_phone x86-64, które jest dziesięć razy większe od zwykłego urządzenia mątwy.

Dziedzicz z istniejącego celu

Aby dziedziczyć z istniejącego celu:

  • Utwórz katalog device/google/cuttlefish/vsoc_x86_64/ big_phone .
  • Utwórz plik aosp_cf.mk w tym katalogu.
$(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)

Dodaj cel lunchowy

Wstaw cel lunch do pliku device/google/cuttlefish/AndroidProducts.mk :

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

Zdefiniuj konfigurację JSON

Aby uruchomić urządzenie Cuttlefish, utwórz plik konfiguracyjny JSON o nazwie big_phone .json o strukturze hierarchicznej reprezentującej właściwości urządzenia. Na przykład w pliku konfiguracyjnym JSON można określić opcje, takie jak pamięć RAM przydzielona dla maszyny wirtualnej i konfiguracja wyświetlacza. Plik ten nie musi znajdować się w drzewie AOSP. Aby uzyskać szczegółowe informacje na temat formatu JSON konfiguracji, zobacz Konfiguracje kanoniczne .

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

Aby uruchomić konfigurację, uruchom:

cvd start --config_file=big_phone.json

Uruchom launch_cvd (starsza wersja)

Niektóre właściwości konfiguracji nie są dostępne w hierarchicznym formacie konfiguracji JSON. W przypadku takich konfiguracji można ustawić domyślne wartości flagi launch_cvd z jednopoziomowego słownika JSON. Pełną listę wszystkich opcji konfiguracyjnych można znaleźć w cf_flags_validator.cpp .

Poniżej opisano przykład, w jaki sposób zastąpić domyślne wartości opcji flagi launch_cvd przy użyciu pliku konfiguracyjnego JSON i umożliwić programowi uruchamiającemu mątwy uruchomienie konfiguracji niestandardowej.

  1. Utwórz plik konfiguracyjny JSON, device/google/cuttlefish/shared/config/config_ big_phone .json z niestandardowymi wartościami.

    {
      "x_res": 7200,
      "y_res": 12800,
      "dpi": 320,
      "memory_mb": 40960,
      "ddr_mem_mb": 49150,
    }
    
  2. Aby program uruchamiający mątwy mógł uruchomić konfigurację big_phone , upewnij się, że ma dostęp do device/google/cuttlefish/shared/config/config_ big_phone .json wykonując następujące czynności:

    1. Zadeklaruj artefakt JSON jako artefakt kompilacji, dodając sekcję prebuilt_etc_host w pliku 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. Dodaj powstałą deklarację artefaktu kompilacji do programu uruchamiającego mątwy, uruchamiając następujące polecenie w device/google/cuttlefish/shared/device.mk .

      $(call soong_config_append,cvd,launch_configs,cvd_config_big_phone)
      
    3. Utwórz plik android_info.txt i powiąż konfigurację big_phone z plikiem, dodając następujący wiersz do 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. Oznacz typ urządzenia za pomocą konfiguracji big_phone , wypełniając device/google/cuttlefish/vsoc_x86_64/ big_phone /android-info.txt następującymi informacjami:

      config=big_phone