ساقه ماهی: یک دستگاه سفارشی ایجاد کنید

این صفحه نحوه ایجاد یک دستگاه Cuttlefish سفارشی را شرح می دهد. Cuttlefish شامل انواع دستگاه های از پیش تعریف شده در فاکتورهای شکلی مختلف است که در AndroidProducts.mk فهرست شده است. علاوه بر گزینه‌های سفارشی‌سازی کلی دستگاه که در «افزودن دستگاه جدید» توضیح داده شده است، می‌توانید سفارشی‌سازی‌های مخصوص Cuttlefish مانند تنظیمات پیش‌تنظیم برد دستگاه مجازی (vsoc_x88_64، vsoc_arm64، vsoc_riscv64)، پیش‌ساخته‌های هسته، پیش‌ساخته‌های بوت‌لودر، ویژگی‌های فروشنده، ویژگی‌های nesfig سیستم را انجام دهید. پشتیبانی مجازی سازی و گزینه های نمایش برای فهرست کامل پارامترهای زمان ساخت که می‌توانند سفارشی شوند، 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 start --config_file=big_phone.json

launch_cvd را اجرا کنید (قدیمی)

برخی از ویژگی های پیکربندی در قالب پیکربندی سلسله مراتبی JSON در دسترس نیستند. برای چنین پیکربندی‌هایی، می‌توانید مقادیر پیش‌فرض flag 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. با افزودن مصراع 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",
      }
      
    2. با اجرای موارد زیر در device/google/cuttlefish/shared/device.mk اعلامیه ساخت مصنوع حاصل را به لانچر Cuttlefish اضافه کنید.

      $(call soong_config_append,cvd,launch_configs,cvd_config_big_phone)
      
    3. یک فایل 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
      
    4. با پر کردن device/google/cuttlefish/vsoc_x86_64/ big_phone /android-info.txt نوع دستگاه را با پیکربندی big_phone برچسب گذاری کنید:

      config=big_phone