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 في ملف 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