На этой странице описывается, как создать настраиваемое устройство Cuttlefish. Cuttlefish включает в себя предопределённые типы устройств в различных форм-факторах, перечисленные в файле AndroidProducts.mk . Помимо общих параметров настройки устройства, описанных в разделе Добавление нового устройства , вы можете настроить параметры, специфичные для Cuttlefish, такие как предустановки конфигурации платы виртуального устройства (vsoc_x86_64, vsoc_arm64, vsoc_riscv64), готовые сборки ядра, готовые сборки загрузчика, свойства поставщика, конфигурации системы, поддержку вложенной виртуализации и параметры отображения. Полный список настраиваемых параметров сборки см. в файле device/google/cuttlefish/vsoc_x86_64/phone/aosp_cf.mk .
 Следующие шаги описывают, как создать вымышленное устройство x86-64 big_phone , в десять раз превышающее по размеру обычное устройство 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 для запуска пользовательской конфигурации.
- Создайте файл конфигурации 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, }
- Чтобы лаунчер Cuttlefish запустил конфигурацию - big_phone, убедитесь, что у него есть доступ к файлу- device/google/cuttlefish/shared/config/config_ big_phone .jsonвыполнив следующие действия:- Объявите артефакт 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", }
- Добавьте результирующее объявление артефакта сборки в средство запуска Cuttlefish, выполнив следующее в - device/google/cuttlefish/shared/device.mk.- $(call soong_config_append,cvd,launch_configs,cvd_config_big_phone)
- Создайте файл - 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
- Обозначьте тип устройства с помощью конфигурации - big_phone, заполнив- device/google/cuttlefish/vsoc_x86_64/ big_phone /android-info.txtследующим:- config=big_phone
 
