این صفحه نحوه ایجاد یک دستگاه 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، می توانید گزینه هایی مانند RAM اختصاص داده شده برای VM و پیکربندی نمایشگر را مشخص کنید. این فایل نباید در درخت AOSP باشد. برای جزئیات بیشتر در مورد قالب JSON برای پیکربندی ها، به تنظیمات Canonical مراجعه کنید.
{
"instances":
[
{
"vm": {
"memory_mb": 40960,
},
"graphics": {
"displays": [
{
"width": 7200,
"height": 12800,
"dpi": 320
}
]
}
}
]
}
برای راه اندازی پیکربندی، اجرا کنید:
cvd create --config_file=big_phone.jsonlaunch_cvd را اجرا کنید (قدیمی)
برخی از ویژگی های پیکربندی در قالب پیکربندی سلسله مراتبی JSON در دسترس نیستند. برای چنین پیکربندیهایی، میتوانید مقادیر پیشفرض flag 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دسترسی دارد:با افزودن مصراع
prebuilt_etc_hostدر فایلdevice/google/cuttlefish/shared/config/Android.bpآرتیفکت JSON را به عنوان مصنوع ساخت اعلام کنید.prebuilt_etc_host { name: "cvd_config_big_phone.json", src: "config_big_phone.json", sub_dir: "cvd_config", }با اجرای موارد زیر در
device/google/cuttlefish/shared/device.mkاعلامیه ساخت مصنوع حاصل را به لانچر Cuttlefish اضافه کنید.$(call soong_config_append,cvd,launch_configs,cvd_config_big_phone)یک فایل
android_info.txtایجاد کنید و با افزودن خط زیر بهdevice/google/cuttlefish/vsoc_x86_64/ big_phone /aosp_cf.mkپیکربندیbig_phoneرا به فایل گره بزنید:TARGET_BOARD_INFO_FILE := device/google/cuttlefish/vsoc_x86_64/<var>big_phone</var>/android-info.txtبا پر کردن
device/google/cuttlefish/vsoc_x86_64/ big_phone /android-info.txtنوع دستگاه را با پیکربندیbig_phoneبرچسب گذاری کنید:config=big_phone