कटलफ़िश: अपनी पसंद के मुताबिक डिवाइस बनाएं

इस पेज पर, अपनी ज़रूरत के हिसाब से Cuttlefish डिवाइस बनाने का तरीका बताया गया है. Cuttlefish में, डिवाइस के अलग-अलग साइज़, डाइमेंशन या कॉन्फ़िगरेशन के हिसाब से, पहले से तय डिवाइस टाइप शामिल होते हैं. इनके बारे में AndroidProducts.mk में बताया गया है. नया डिवाइस जोड़ना में बताए गए, डिवाइस को पसंद के मुताबिक बनाने के सामान्य विकल्पों के अलावा, Cuttlefish के हिसाब से भी डिवाइस को पसंद के मुताबिक बनाया जा सकता है. जैसे, वर्चुअल डिवाइस बोर्ड कॉन्फ़िगरेशन प्रीसेट (vsoc_x88_64, vsoc_arm64, vsoc_riscv64), पहले से बने कर्नेल, पहले से बने बूटलोडर, वेंडर प्रॉपर्टी, सिस्टम कॉन्फ़िगरेशन, नेस्ट किए गए वर्चुअलाइज़ेशन के लिए सहायता, और डिसप्ले के विकल्प. अपनी पसंद के मुताबिक बनाए जा सकने वाले, बिल्ड टाइम पैरामीटर की पूरी सूची के लिए, device/google/cuttlefish/vsoc_x86_64/phone/aosp_cf.mk देखें.

यहां बताया गया है कि किसी सामान्य Cuttlefish डिवाइस के साइज़ से 10 गुना बड़ा 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)

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

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

PRODUCT_MAKEFILES := \
  ...
  big_phone:$(LOCAL_DIR)/vsoc_x86_64/big_phone/aosp_cf.mk
  ...
lunch big_phone

JSON कॉन्फ़िगरेशन तय करें

कटलफ़िश डिवाइस को लॉन्च करने के लिए, big_phone.json नाम की एक JSON कॉन्फ़िगरेशन फ़ाइल बनाएं. इसमें डिवाइस की प्रॉपर्टी के बारे में बताने वाली हैरारकी है. उदाहरण के लिए, JSON कॉन्फ़िगरेशन फ़ाइल में, विकल्पों की जानकारी दी जा सकती है. जैसे, VM के लिए तय की गई रैम और डिसप्ले कॉन्फ़िगरेशन. यह ज़रूरी नहीं है कि यह फ़ाइल 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 फ़्लैग विकल्पों की डिफ़ॉल्ट वैल्यू को बदलने का तरीका बताया गया है. साथ ही, कस्टम कॉन्फ़िगरेशन लॉन्च करने के लिए, कटलफ़िश लॉन्चर को चालू करने का तरीका भी बताया गया है.

  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. 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 में यह तरीका अपनाएं.

      $(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