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

این صفحه نحوه ایجاد یک دستگاه 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 برای اجرای پیکربندی سفارشی شرح داده شده است.

  1. یک 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,
    }
    
  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. نوع دستگاه را با پیکربندی big_phone با وارد کردن دستور زیر در فایل device/google/cuttlefish/vsoc_x86_64/ big_phone /android-info.txt مشخص کنید:

      config=big_phone