الحبار: قم بإنشاء جهاز مخصص

توضح هذه الصفحة كيفية إنشاء جهاز Cuttlefish مخصص. يشتمل Cuttlefish على أنواع أجهزة محددة مسبقًا بأشكال مختلفة كما هو موضح في AndroidProducts.mk . بالإضافة إلى خيارات تخصيص الجهاز العامة الموضحة في إضافة جهاز جديد ، يمكنك إجراء تخصيصات خاصة بـ Cuttlefish مثل الإعدادات المسبقة لتكوين لوحة الجهاز الظاهري (vsoc_x88_64، vsoc_arm64، vsoc_riscv64)، والإنشاءات المسبقة لـ kernel، والإنشاءات المسبقة لمحمل الإقلاع، وخصائص البائع، وتكوينات النظام، والمتداخلة دعم المحاكاة الافتراضية وخيارات العرض. للحصول على قائمة كاملة بمعلمات وقت الإنشاء التي يمكن تخصيصها، راجع 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 start --config_file=big_phone.json

تشغيل Launch_cvd (قديم)

لا تتوفر بعض خصائص التكوين في تنسيق تكوين JSON الهرمي. بالنسبة لمثل هذه التكوينات، يمكنك تعيين القيم الافتراضية لعلامة 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. قم بتعريف قطعة 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",
      }
      
    2. أضف إعلان الإنشاء الناتج إلى مشغل Cuttlefish عن طريق تشغيل ما يلي في device/google/cuttlefish/shared/device.mk .

      $(call soong_config_append,cvd,launch_configs,cvd_config_big_phone)
      
    3. قم بإنشاء ملف 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
      
    4. قم بتسمية نوع الجهاز بتكوين big_phone عن طريق ملء device/google/cuttlefish/vsoc_x86_64/ big_phone /android-info.txt بما يلي:

      config=big_phone