Каракатица: создайте собственное устройство

На этой странице описывается, как создать настроенное устройство Cuttlefish. Cuttlefish включает в себя предопределенные типы устройств в различных форм-факторах, перечисленных в AndroidProducts.mk . В дополнение к общим параметрам настройки устройства, описанным в Добавление нового устройства , вы можете выполнить специфичные для Cuttlefish настройки, такие как предустановки конфигурации платы виртуального устройства (vsoc_x86_64, vsoc_arm64, vsoc_riscv64), готовые сборки ядра, готовые сборки загрузчика, свойства поставщика, конфигурации системы, поддержка вложенной виртуализации и параметры отображения. Полный список параметров времени сборки, которые можно настроить, см. device/google/cuttlefish/vsoc_x86_64/phone/aosp_cf.mk .

Следующие шаги описывают, как создать вымышленное устройство big_phone x86-64, в десять раз превышающее по размеру обычное устройство Cuttlefish.

Наследовать от существующей цели

Чтобы унаследовать от существующей цели:

  • Создайте каталог device/google/cuttlefish/vsoc_x86_64/ big_phone .
  • Создайте в этом каталоге файл 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)

Добавить цель на обед

Вставьте цель lunch в файл device/google/cuttlefish/AndroidProducts.mk :

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

Определить конфигурацию JSON

Для запуска устройства Cuttlefish создайте файл конфигурации JSON с именем big_phone .json с иерархической структурой, представляющей свойства устройства. Например, в файле конфигурации JSON можно указать такие параметры, как объем оперативной памяти, выделенный для виртуальной машины, и конфигурацию дисплея. Этот файл не обязательно должен находиться в дереве AOSP. Подробнее о формате JSON для конфигураций см. в разделе Канонические конфигурации .

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

Для запуска конфигурации выполните:

cvd create --config_file=big_phone.json

Запустить launch_cvd (устаревший)

Некоторые свойства конфигурации недоступны в иерархическом формате конфигурации JSON. Для таких конфигураций можно задать значения по умолчанию флага launch_cvd из одноуровневого словаря JSON. Полный список всех параметров конфигурации см. в cf_flags_validator.cpp .

Ниже описан пример того, как переопределить значения по умолчанию параметров флага launch_cvd с помощью файла конфигурации JSON и включить средство запуска Cuttlefish для запуска пользовательской конфигурации.

  1. Создайте файл конфигурации JSON, device/google/cuttlefish/shared/config/config_ big_phone .json , с пользовательскими значениями.

    {
      "x_res": 7200,
      "y_res": 12800,
      "dpi": 320,
      "memory_mb": 40960,
      "ddr_mem_mb": 49150,
    }
    
  2. Чтобы лаунчер Cuttlefish запустил конфигурацию big_phone , убедитесь, что у него есть доступ к файлу device/google/cuttlefish/shared/config/config_ big_phone .json выполнив следующие действия:

    1. Объявите артефакт JSON как артефакт сборки, добавив строфу prebuilt_etc_host в файл 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. Добавьте результирующее объявление артефакта сборки в средство запуска Cuttlefish, выполнив следующую команду в device/google/cuttlefish/shared/device.mk .

      $(call soong_config_append,cvd,launch_configs,cvd_config_big_phone)
      
    3. Создайте файл android_info.txt и привяжите к нему конфигурацию big_phone , добавив следующую строку в 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. Пометьте тип устройства с помощью конфигурации big_phone , заполнив device/google/cuttlefish/vsoc_x86_64/ big_phone /android-info.txt следующим:

      config=big_phone
      
,

На этой странице описывается, как создать настроенное устройство Cuttlefish. Cuttlefish включает в себя предопределенные типы устройств в различных форм-факторах, перечисленных в AndroidProducts.mk . В дополнение к общим параметрам настройки устройства, описанным в Добавление нового устройства , вы можете выполнить специфичные для Cuttlefish настройки, такие как предустановки конфигурации платы виртуального устройства (vsoc_x86_64, vsoc_arm64, vsoc_riscv64), готовые сборки ядра, готовые сборки загрузчика, свойства поставщика, конфигурации системы, поддержка вложенной виртуализации и параметры отображения. Полный список параметров времени сборки, которые можно настроить, см. device/google/cuttlefish/vsoc_x86_64/phone/aosp_cf.mk .

Следующие шаги описывают, как создать вымышленное устройство big_phone x86-64, в десять раз превышающее по размеру обычное устройство Cuttlefish.

Наследовать от существующей цели

Чтобы унаследовать от существующей цели:

  • Создайте каталог device/google/cuttlefish/vsoc_x86_64/ big_phone .
  • Создайте в этом каталоге файл 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)

Добавить цель на обед

Вставьте цель lunch в файл device/google/cuttlefish/AndroidProducts.mk :

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

Определить конфигурацию JSON

Для запуска устройства Cuttlefish создайте файл конфигурации JSON с именем big_phone .json с иерархической структурой, представляющей свойства устройства. Например, в файле конфигурации JSON можно указать такие параметры, как объем оперативной памяти, выделенный для виртуальной машины, и конфигурацию дисплея. Этот файл не обязательно должен находиться в дереве AOSP. Подробнее о формате JSON для конфигураций см. в разделе Канонические конфигурации .

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

Для запуска конфигурации выполните:

cvd create --config_file=big_phone.json

Запустить launch_cvd (устаревший)

Некоторые свойства конфигурации недоступны в иерархическом формате конфигурации JSON. Для таких конфигураций можно задать значения по умолчанию флага launch_cvd из одноуровневого словаря JSON. Полный список всех параметров конфигурации см. в cf_flags_validator.cpp .

Ниже описан пример того, как переопределить значения по умолчанию параметров флага launch_cvd с помощью файла конфигурации JSON и включить средство запуска Cuttlefish для запуска пользовательской конфигурации.

  1. Создайте файл конфигурации JSON, device/google/cuttlefish/shared/config/config_ big_phone .json , с пользовательскими значениями.

    {
      "x_res": 7200,
      "y_res": 12800,
      "dpi": 320,
      "memory_mb": 40960,
      "ddr_mem_mb": 49150,
    }
    
  2. Чтобы лаунчер Cuttlefish запустил конфигурацию big_phone , убедитесь, что у него есть доступ к файлу device/google/cuttlefish/shared/config/config_ big_phone .json выполнив следующие действия:

    1. Объявите артефакт JSON как артефакт сборки, добавив строфу prebuilt_etc_host в файл 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. Добавьте результирующее объявление артефакта сборки в средство запуска Cuttlefish, выполнив следующую команду в device/google/cuttlefish/shared/device.mk .

      $(call soong_config_append,cvd,launch_configs,cvd_config_big_phone)
      
    3. Создайте файл android_info.txt и привяжите к нему конфигурацию big_phone , добавив следующую строку в 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. Пометьте тип устройства с помощью конфигурации big_phone , заполнив device/google/cuttlefish/vsoc_x86_64/ big_phone /android-info.txt следующим:

      config=big_phone