این صفحه نحوه ایجاد یک دستگاه 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 اختصاص داده شده برای ماشین مجازی و پیکربندی نمایشگر را مشخص کنید. این فایل لازم نیست در درخت AOSP باشد. برای جزئیات بیشتر در مورد قالب JSON برای پیکربندیها، به پیکربندیهای Canonical مراجعه کنید.
{
"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 برای اجرای پیکربندی سفارشی شرح داده شده است.
یک
device/google/cuttlefish/shared/config/config_ big_phone .jsonپیکربندی 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نوع دستگاه را با پیکربندی
big_phoneبا وارد کردن دستور زیر در فایلdevice/google/cuttlefish/vsoc_x86_64/ big_phone /android-info.txtمشخص کنید:config=big_phone