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

توضّح هذه الصفحة كيفية إنشاء جهاز 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، يمكنك تحديد خيارات مثل ذاكرة الوصول العشوائي المخصّصة للجهاز الظاهري وإعدادات الشاشة. ولا يلزم أن يكون هذا الملف في شجرة 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. لكي يتمكّن مشغّل 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