कटलफ़िश हाइब्रिड डिवाइस बनाना

इस पेज पर, Cuttlefish हाइब्रिड डिवाइस (सीएचडी) बनाने का तरीका बताया गया है.

सीएचडी, Cuttlefish का हाइब्रिड वर्चुअल डिवाइस है. यह डिवाइस के HAL पर, Cuttlefish की सिस्टम इमेज के बजाय किसी फ़िज़िकल डिवाइस की सिस्टम इमेज चलाता है. इससे ये फ़ायदे मिलते हैं:

  • शुरुआती डेवलपमेंट और टेस्टिंग: सीएचडी की मदद से, अगली जनरेशन के सिस्टम सॉफ़्टवेयर को फ़िज़िकल हार्डवेयर के उपलब्ध होने से पहले ही डेवलप और टेस्ट किया जा सकता है.

  • स्केलेबिलिटी: सीएचडी की मदद से, डेवलपमेंट और टेस्टिंग की क्षमता को आसानी से बढ़ाया जा सकता है.

सीएचडी इमेज बनाना

सीएचडी इमेज बनाने के लिए, यह तरीका अपनाएं:

  1. make dist का इस्तेमाल करके, वेंडर टारगेट और फ़िज़िकल डिवाइस के लिए टारगेट फ़ाइलें जनरेट करें. वेंडर टारगेट फ़ाइलें जनरेट करने के लिए, इनमें से कोई एक विकल्प चुनें:

    • Cuttlefish का मौजूदा पूरा टारगेट
    • Cuttlefish का ऐसा टारगेट जो सिर्फ़ Cuttlefish की वेंडर फ़ाइलें बनाता है. ज़्यादा जानकारी के लिए, देखें Cuttlefish का वेंडर टारगेट बनाना.
  2. दोनों टारगेट फ़ाइलों को मिलाकर, सीएचडी टारगेट फ़ाइल बनाएं. इसके बाद, सीएचडी इमेज जनरेट करें.build_cf_hybrid_device.py यह स्क्रिप्ट, merge_target_files.pyका इस्तेमाल करके, दोनों टारगेट फ़ाइलों को मिलाकर सीएचडी टारगेट फ़ाइल बनाती है. इसके बाद, img_from_target_filesका इस्तेमाल करके, सीएचडी टारगेट फ़ाइल से सीएचडी इमेज जनरेट करती है.

    python3 tools/treble/cuttlefish/build_cf_hybrid_device.py \
      --framework_target_files_zip <physical_device_target_files.zip> \
      --vendor_target_files_zip <cuttlefish_device_target_files.zip> \
      --otatools_zip <cuttlefish_otatools.zip> \
      --target chd \
      --output_dir <output_directory>
    

Cuttlefish का वेंडर टारगेट बनाना

aosp_cf_vendor.mk का इस्तेमाल करके, aosp_cf_arm64_phone_vendor टारगेट तय किया जा सकता है. इसका इस्तेमाल, सीएचडी इमेज के लिए वेंडर टारगेट फ़ाइल के तौर पर किया जा सकता है.

Cuttlefish का सिर्फ़ वेंडर टारगेट बनाने के लिए, यह तरीका अपनाएं:

  1. Cuttlefish के उस टारगेट को इनहेरिट करें जो पूरे आर्टफ़ैक्ट बनाता है:

    $(call inherit-product, device/google/cuttlefish/vsoc_arm64/phone/aosp_cf.mk)
    
  2. टारगेट का नाम तय करें:

    PRODUCT_NAME := aosp_cf_arm64_phone_vendor
    
  3. पूरे आर्टफ़ैक्ट से, गैर-ज़रूरी बिल्ड को बंद करें:

    PRODUCT_BUILD_SYSTEM_IMAGE := false
    PRODUCT_BUILD_SYSTEM_OTHER_IMAGE := false
    PRODUCT_BUILD_PRODUCT_IMAGE := false
    PRODUCT_BUILD_SYSTEM_EXT_IMAGE := false
    PRODUCT_BUILD_SUPER_PARTITION := false
    TARGET_SKIP_OTA_PACKAGE := true