حبَّار: أنشئ جهازًا مخصَّصًا

توضّح هذه الصفحة كيفية إنشاء جهاز Cuttlefish مخصّص. يشمل تطبيق حبَّار أنواع الأجهزة المحددة مسبقًا بأشكال مختلفة كما هو موضّح في AndroidProducts.mk. بالإضافة إلى الخيارات العامة لتخصيص الأجهزة الموضّحة في إضافة جهاز جديد، يمكنك أيضًا إجراء عمليات تخصيص خاصة بأداة Cuttlefish، مثل الإعدادات المسبقة لإعداد لوحة الأجهزة الافتراضية (vsoc_x88_64 وvoc_arm64 وvsoc_riscv64) وتقنيات kernel مسبقة الإعداد وبرامج تحميل برامج التحميل وخيارات الموّردين وإعدادات النظام والعرض الافتراضي المُدمج. للحصول على قائمة كاملة بملفه مَعلمات وقت الإنشاء التي يمكن تخصيصها، راجِع device/google/cuttlefish/vsoc_x86_64/phone/aosp_cf.mk.

توضّح الخطوات التالية كيفية إنشاء جهاز وهمي بحجم x86-64 big_phone بحجم عشرة أضعاف حجم جهاز حبّار عادي.

اكتساب القيمة من استهداف حالي

للاكتساب من استهداف حالي:

  • أنشِئ دليل 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 create --config_file=big_phone.json

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

لا تتوفّر بعض سمات الإعدادات في تنسيق الإعدادات التدرّجية بتنسيق JSON . بالنسبة إلى هذه الإعدادات، يمكنك ضبط قيم launch_cvd flag التلقائية من قاموس 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. ليشغِّل مشغّل حبَّار إعدادات 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