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)

लंच टारगेट जोड़ना

device/google/cuttlefish/AndroidProducts.mk फ़ाइल में, lunch टारगेट डालें:

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 कॉन्फ़िगरेशन फ़ॉर्मैट में, कुछ कॉन्फ़िगरेशन प्रॉपर्टी उपलब्ध नहीं होती हैं. ऐसे कॉन्फ़िगरेशन के लिए, एक ही लेवल वाले JSON शब्दकोश से launch_cvd फ़्लैग की डिफ़ॉल्ट वैल्यू सेट की जा सकती हैं. सभी कॉन्फ़िगरेशन विकल्पों की पूरी सूची देखने के लिए, देखें cf_flags_validator.cpp.

यहां, JSON कॉन्फ़िगरेशन फ़ाइल का इस्तेमाल करके, launch_cvd फ़्लैग के विकल्पों की डिफ़ॉल्ट वैल्यू को बदलने का एक उदाहरण दिया गया है. साथ ही, इसमें बताया गया है कि Cuttlefish लॉन्चर को, कस्टम कॉन्फ़िगरेशन लॉन्च करने के लिए कैसे चालू किया जा सकता है.

  1. कस्टम वैल्यू के साथ, device/google/cuttlefish/shared/config/config_big_phone.json, नाम की 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. device/google/cuttlefish/shared/config/Android.bp फ़ाइल में, prebuilt_etc_host स्टैंज़ा जोड़कर, JSON आर्टफ़ैक्ट को बिल्ड आर्टफ़ैक्ट के तौर पर एलान करें.

      prebuilt_etc_host {
          name: "cvd_config_big_phone.json",
          src: "config_big_phone.json",
          sub_dir: "cvd_config",
      }
      
    2. device/google/cuttlefish/shared/device.mk में यह कमांड चलाकर, Cuttlefish लॉन्चर में, बनने वाले बिल्ड आर्टफ़ैक्ट का एलान जोड़ें.

      $(call soong_config_append,cvd,launch_configs,cvd_config_big_phone)
      
    3. android_info.txt फ़ाइल बनाएं और device/google/cuttlefish/vsoc_x86_64/big_phone/aosp_cf.mk में यह लाइन जोड़कर, big_phone कॉन्फ़िगरेशन को फ़ाइल से जोड़ें:

      TARGET_BOARD_INFO_FILE := device/google/cuttlefish/vsoc_x86_64/<var>big_phone</var>/android-info.txt
      
    4. device/google/cuttlefish/vsoc_x86_64/big_phone/android-info.txt में यह जानकारी डालकर, डिवाइस टाइप को big_phone कॉन्फ़िगरेशन के साथ लेबल करें:

      config=big_phone