Mątwa: stwórz własne urządzenie

Ta strona opisuje, jak utworzyć niestandardowe urządzenie Cuttlefish. Cuttlefish obejmuje wstępnie zdefiniowane typy urządzeń w różnych formatach, jak podano w AndroidProducts.mk. Oprócz ogólnych opcji dostosowywania urządzenia opisanych w artykule Dodawanie nowego urządzenia możesz wprowadzać zmiany specyficzne dla Cuttlefish, takie jak gotowe ustawienia konfiguracji płyty urządzenia wirtualnego (vsoc_x88_64, vsoc_arm64, vsoc_riscv64), gotowe wersje jądra, gotowe ustawienia programu rozruchowego, właściwości zagnieżdżone, konfiguracje systemu i opcje wirtualizacji wyświetlacza. Pełną listę parametrów czasu kompilacji, które można dostosować, znajdziesz w sekcji device/google/cuttlefish/vsoc_x86_64/phone/aosp_cf.mk.

Podane niżej kroki pokazują, jak utworzyć fikcyjne urządzenie x86-64big_phone, które jest 10 razy większe od zwykłego urządzenia Cutletfish.

Dziedziczenie z dotychczasowego celu

Aby odziedziczyć ustawienia z dotychczasowego celu:

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

Dodawanie celu dotyczącego lunchu

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

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

Definiowanie konfiguracji JSON

Aby uruchomić urządzenie Cuttlefish, utwórz plik konfiguracji JSON o nazwie big_phone.json ze hierarchiczną strukturą reprezentującą właściwości urządzenia. W pliku konfiguracyjnym JSON możesz na przykład określić opcje takie jak pamięć RAM przydzielona maszynie wirtualnej i konfiguracja wyświetlacza. Ten plik nie musi znajdować się w drzewie AOSP. Szczegółowe informacje o formacie JSON na potrzeby konfiguracji znajdziesz w artykule Konfiguracje kanoniczne.

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

Aby uruchomić konfigurację, uruchom polecenie:

cvd create --config_file=big_phone.json

Uruchom launch_cvd (starsza wersja)

Niektóre właściwości konfiguracji są niedostępne w hierarchicznym formacie konfiguracji JSON. W takich konfiguracjach możesz ustawić flagę launch_cvd z domyślnymi wartościami ze słownika JSON na jednym poziomie. Pełną listę wszystkich opcji konfiguracyjnych znajdziesz na stronie cf_flags_validator.cpp.

Poniżej znajdziesz przykład zastępowania domyślnych wartości opcji flagi launch_cvd za pomocą pliku konfiguracji JSON i włączania Cuttlefish w programie uruchamiającym konfigurację, aby uruchomić konfigurację niestandardową.

  1. Utwórz plik konfiguracji 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 Cuttlefish uruchomił konfigurację big_phone, upewnij się, że ma dostęp do pliku device/google/cuttlefish/shared/config/config_big_phone.json, wykonując te czynności:

    1. Zadeklaruj artefakt JSON jako artefakt kompilacji, dodając strofę 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 otrzymaną deklarację artefaktu kompilacji do programu uruchamiającego Cuttlefish, uruchamiając to 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ązać z nim plik konfiguracji big_phone, dodając do pliku device/google/cuttlefish/vsoc_x86_64/big_phone/aosp_cf.mk ten wiersz:

      TARGET_BOARD_INFO_FILE := device/google/cuttlefish/vsoc_x86_64/<var>big_phone</var>/android-info.txt
      
    4. Oznacz typ urządzenia konfiguracją big_phone, wypełniając pole device/google/cuttlefish/vsoc_x86_64/big_phone/android-info.txt tymi elementami:

      config=big_phone