Cuttlefish: إنشاء جهاز مخصّص

توضّح هذه الصفحة كيفية إنشاء جهاز Cuttlefish مخصّص. يتضمّن Cuttlefish أنواع أجهزة محدّدة مسبقًا بأشكال مختلفة كما هو موضّح في AndroidProducts.mk. بالإضافة إلى خيارات تخصيص الجهاز العامة الموضّحة في إضافة جهاز جديد، يمكنك إجراء تخصيصات خاصة بـ Cuttlefish، مثل الإعدادات المسبقة لإعداد لوحة الجهاز الافتراضي (vsoc_x86_64 وvsoc_arm64 وvsoc_riscv64)، والملفات الثنائية المجمّعة مسبقًا للنواة، والملفات الثنائية المجمّعة مسبقًا لأداة تحميل التشغيل، وخصائص مورِّد الجهاز، وإعدادات النظام، ودعم المحاكاة الافتراضية المتداخلة، وخيارات العرض. للاطّلاع على قائمة كاملة بـ معلّمات مدّة التصميم التي يمكن تخصيصها، يُرجى الاطّلاع على 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`

يُرجى إدراج هدف 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 للإعدادات، يُرجى الاطّلاع على الإعدادات الأساسية.

{
  "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. يُرجى إنشاء ملف إعداد 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