На этой странице описано, как создать настраиваемое устройство 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