कंडिशनल डिलीवरी कॉन्फ़िगर करें

शर्तों के साथ डिलीवरी की सुविधा से, डिवाइस कॉन्फ़िगरेशन से जुड़ी कुछ ज़रूरी शर्तें सेट की जा सकती हैं का इस्तेमाल करें. उदाहरण के लिए, एक ऐसा फ़ीचर मॉड्यूल कॉन्फ़िगर किया जा सकता है जिसमें ऑगमेंटेड रिएलिटी (एआर) की सुविधा, सिर्फ़ एआर (ऑगमेंटेड रिएलिटी) का इस्तेमाल करने वाले डिवाइस पर.

यह वितरण प्रणाली वर्तमान में डाउनलोड को नियंत्रित करने का समर्थन करती है ऐप्लिकेशन इंस्टॉल के समय वाला मॉड्यूल, जो इन डिवाइस कॉन्फ़िगरेशन पर आधारित है:

अगर कोई डिवाइस आपकी बताई गई सभी ज़रूरी शर्तों को पूरा नहीं करता है, तो मॉड्यूल ऐप्लिकेशन इंस्टॉल करते समय डाउनलोड किया गया. हालांकि, आपका ऐप्लिकेशन बाद में Play Core का इस्तेमाल करके, माउस पर मॉड्यूल डाउनलोड करें SDK टूल.

शुरू करने से पहले, पक्का करें कि आपके पास Android Studio 3.5 या इसके बाद वाला वर्शन हो. कॉन्टेंट बनाने यहां दिए गए सेक्शन में, शर्तों के साथ डिलीवरी की सुविधा को सुविधा वाले मॉड्यूल.

शर्तों के साथ डिलीवरी पाने के विकल्पों वाला एक नया मॉड्यूल जोड़ें

कंडिशनल डिलीवरी के साथ एक नया फ़ीचर मॉड्यूल बनाने का सबसे आसान तरीका नया मॉड्यूल विज़र्ड पर क्लिक करके, इस तरह से होगा:

  1. नया मॉड्यूल डायलॉग खोलने के लिए, फ़ाइल > नया > इसका नया मॉड्यूल क्लिक करें.
  2. नया मॉड्यूल डायलॉग बॉक्स में, डाइनैमिक फ़ीचर मॉड्यूल चुनें. इसके बाद, आगे बढ़ें पर टैप करें.
  3. अपने मॉड्यूल को सामान्य तरीके से कॉन्फ़िगर करें और आगे बढ़ें पर क्लिक करें.
  4. मॉड्यूल डाउनलोड के विकल्प सेक्शन में, इन चीज़ों को पूरा करें:

    1. मॉड्यूल का शीर्षक तय करने के लिए, ज़्यादा से ज़्यादा 50 वर्ण इस्तेमाल करें. प्लैटफ़ॉर्म इस शीर्षक का इस्तेमाल करके उपयोगकर्ताओं को मॉड्यूल की पहचान करता है. उदाहरण के लिए, यह पुष्टि करता है कि उपयोगकर्ता मॉड्यूल को डाउनलोड करना चाहता है या नहीं. इसके लिए की वजह है, तो आपके ऐप्लिकेशन के बेस मॉड्यूल में, मॉड्यूल के टाइटल को string संसाधन होता है, जिसे आप अनुवाद कर सकते हैं. Android Studio का इस्तेमाल करके मॉड्यूल बनाते समय, IDE आपके लिए, स्ट्रिंग रिसॉर्स को बेस मॉड्यूल में जोड़ता है और इंजेक्ट करता है सुविधा मॉड्यूल के मेनिफ़ेस्ट में नीचे दी गई एंट्री:

      <dist:module
          ...
          dist:title="@string/feature_title">
      </dist:module>
      
    2. इंस्टॉल करते समय शामिल करने की सुविधा के नीचे मौजूद ड्रॉपडाउन मेन्यू में, सिर्फ़ चुनें खास सुविधाओं वाले डिवाइसों के लिए, ऐप्लिकेशन इंस्टॉल पर मॉड्यूल शामिल करते हैं, एक ऐसा मॉड्यूल बनाता है जो सिर्फ़ 'ऐप्लिकेशन इंस्टॉल करते समय' आपके ऐप्लिकेशन में शामिल होता है कुछ खास कॉन्फ़िगरेशन वाले डिवाइस जिन्हें आपके हिसाब से सेट किया जा सकता है, जैसे कि डिवाइस सुविधाएं या देश. Android Studio, मॉड्यूल में इन्हें शामिल करता है मेनिफ़ेस्ट फ़ाइल अपलोड करें:

      <dist:module ... >
        <dist:delivery>
            <dist:install-time>
                <dist:conditions>
                    <!-- If you specify conditions, as described in the steps
                         below, the IDE includes them here. -->
                </dist:conditions>
            </dist:install-time>
        </dist:delivery>
      </dist:module>
      
    3. अगर आपको कुछ देशों में मॉड्यूल के अपने-आप डाउनलोड होने की सुविधा को सीमित करना है या एपीआई लेवल का कम से कम लेवल होने पर, मॉड्यूल बनाने के लिए पूरा करें पर क्लिक करें और फिर वह सेक्शन पढ़ें जिसमें बताया गया है कि देश के आधार पर शर्तें तय करें या एपीआई लेवल का कम से कम लेवल. इसके अलावा, किसी डिवाइस में मौजूद सुविधा को जोड़ने के लिए, + डिवाइस की सुविधा पर क्लिक करें इंस्टॉल के समय मॉड्यूल डाउनलोड करने की ज़रूरत होती है.

    4. डिवाइस-सुविधा के आगे, इनमें से कोई एक विकल्प चुनें: ड्रॉपडाउन मेन्यू खोलें और उसका मान तय करें:

      • नाम: आपको हार्डवेयर या सॉफ़्टवेयर तय करने की अनुमति देता है वह सुविधा जिसकी ज़रूरत डिवाइस को इंस्टॉल समय. कंडिशनल डिलीवरी में ये सुविधाएं काम करती हैं: इनके अनुसार, FEATURE_* कॉन्सटेंट के तौर पर लिस्ट किए गए हैं PackageManager. अगर आप यह विकल्प चुनते हैं, तो सुविधा, जैसे कि "ब्लूटूथ", को ड्रॉपडाउन के बगल में मौजूद फ़ील्ड में देखना होगा और दिखने वाले सुझावों में से किसी एक को चुनें.
      • OpenGL ES वर्शन: इसकी मदद से, OpenGL ES का ऐसा वर्शन तय किया जा सकता है जिसमें इंस्टॉल के समय मॉड्यूल डाउनलोड करने के लिए किसी डिवाइस की ज़रूरत होती है. अगर आपको इस विकल्प को चुनने के बाद, वर्शन टाइप करना शुरू करें, जैसे कि "0x00030001", पर क्लिक करें और सुझावों में से किसी एक वे नहीं दिखते.
    5. अगर आपको डिवाइस में मौजूद सुविधाओं के आधार पर, एक से ज़्यादा शर्तें जोड़नी हैं, तो डिवाइस के फ़ीचर की हर शर्त के लिए, + डिवाइस सुविधा पर क्लिक करें तय करें.

    6. अगर आपको यह मॉड्यूल उपलब्ध कराना है, तो Fused के बगल में मौजूद बॉक्स को चुनें Android 4.4 (एपीआई लेवल 20) और इससे पहले के वर्शन वाले डिवाइसों के लिए, जिनमें यह शामिल है मल्टी-APK. इसका मतलब है कि इस मॉड्यूल के लिए, मांग पर व्यवहार की सुविधा को चालू किया जा सकता है और नए डिवाइस पर काम न करने वाले डिवाइस से हटाने के लिए, फ़्यूज़िंग को बंद करें विभाजित APK डाउनलोड और इंस्टॉल करना. Android Studio, मॉड्यूल के मेनिफ़ेस्ट में बताया गया है.

      <dist:module ...>
          <dist:fusing dist:include="true | false" />
      </dist:module>
      
  5. मॉड्यूल डाउनलोड करने के विकल्प कॉन्फ़िगर करने के बाद, पूरा करें पर क्लिक करें.

ध्यान दें कि 'Android Gradle प्लग इन', lint को डाइनैमिक-सुविधा वाले मॉड्यूल से लिया है. कार के लिंट को संबंधित ऐप्लिकेशन मॉड्यूल, इसके डाइनैमिक-सुविधा मॉड्यूल पर लिंट चलाएगा और ऐप्लिकेशन की लिंट रिपोर्ट में सभी समस्याओं को शामिल करें.

किसी मौजूदा सुविधा मॉड्यूल में, शर्तों के साथ डिलीवरी के विकल्प जोड़ना

किसी मौजूदा सुविधा में, शर्त के साथ डिलीवरी की सुविधा आसानी से जोड़ी जा सकती है मॉड्यूल के मेनिफ़ेस्ट से मॉड्यूल का इस्तेमाल किया जा सकता है. हालांकि, आपको पहले दूसरे विकल्पों के साथ कंडिशनल डिलीवरी के विकल्प काम करते हैं डिलीवरी के विकल्प जिन्हें आपने पहले ही चालू किया होगा.

शुरू करने के लिए, आपको सबसे पहले अपनी मेनिफ़ेस्ट फ़ाइल को नए वर्शन पर माइग्रेट करना होगा <dist:delivery> एलिमेंट. नीचे दिया गया कोड स्निपेट पुराने सिंटैक्स:

<!-- This is the old syntax. -->
<dist:module
  dist:title="@string/feature_title" dist:onDemand="true">
  <dist:fusing dist:include="true"/>
</dist:module>

ऊपर दिए गए डिलीवरी के विकल्प अब नीचे दिए गए हैं.

<dist:module
  dist:title="@string/feature_title">
  <dist:delivery>
      <dist:on-demand/>
  </dist:delivery>
  <dist:fusing dist:include="true"/>
</dist:module>

इसके बाद, डिवाइस की सुविधाओं के हिसाब से, प्रॉडक्ट की डिलीवरी के विकल्प इस तरह जोड़े जा सकते हैं अनुसरण करता है.

<dist:module
    dist:title="@string/feature_title">
    <dist:delivery>
      <dist:on-demand/>
      <dist:install-time>
        <dist:conditions>
          <!-- Requires that the device support AR to download the module at
          app install-time.  -->
          <dist:device-feature dist:name="android.hardware.camera.ar"/>
        </dist:conditions>
      </dist:install-time>
    </dist:delivery>
    <dist:fusing dist:include="true"/>
</dist:module>

नीचे दिए गए सेक्शन में, शर्तों के साथ डिलीवरी करने के अन्य विकल्पों के बारे में बताया गया है. जैसे देश या एपीआई लेवल के हिसाब से.

अन्य मॉड्यूल डाउनलोड के विकल्पों के साथ काम करता है या नहीं

ऐसा इसलिए है, क्योंकि सुविधा वाले मॉड्यूल में यह कॉन्फ़िगर करने के कई विकल्प होते हैं कि उपयोगकर्ता के डिवाइस पर सुविधा देता है, तो यह समझना ज़रूरी है कि शर्तों के साथ दी जाने वाली डिलीवरी के विकल्पों पर अन्य सेटिंग का असर पड़ता है. नीचे दी गई टेबल इस बारे में खास जानकारी देता है कि अन्य मॉड्यूल डाउनलोड के साथ कंडिशनल डिलीवरी की सुविधा काम करती है या नहीं के विकल्प.

मॉड्यूल डाउनलोड करने का विकल्प शर्तों के साथ डिलीवरी की सुविधा
फ़्यूज़िंग (<dist:fusing dist:include="true"/>) अगर कोई मॉड्यूल इस विकल्प को 'सही है' पर सेट करता है, तो एपीआई लेवल 19 या इससे पहले के वर्शन वाले डिवाइसों पर अपने ऐप्लिकेशन को डिप्लॉय करते समय, Google Play शर्तों के साथ डिलीवरी के उन विकल्पों पर ध्यान नहीं देगा जो आपने तय किए हैं. इसका मतलब है कि एपीआई लेवल 19 या इससे पहले के वर्शन वाले डिवाइस पर, इंस्टॉल के समय हमेशा फ़्यूज़िंग की सुविधा वाले मॉड्यूल शामिल किए जाते हैं.
झटपट चालू किया गया (<dist:module dist:instant="true"/>) झटपट-खुलने वाले सुविधा मॉड्यूल के लिए, शर्तों के साथ डिलीवरी के विकल्प काम नहीं करते.
मांग पर (<dist:on-demand/>) डिफ़ॉल्ट रूप से, अगर आपने शर्त के साथ डिलीवरी का विकल्प चुना है, तो यह मॉड्यूल मांग पर भी उपलब्ध है.

देश के आधार पर शर्तें तय करें

शर्तों के साथ डिलीवरी की सुविधा से, यह भी तय किया जा सकता है कि आपको किन देशों में ऐप्लिकेशन इंस्टॉल के समय मॉड्यूल डाउनलोड करने से बाहर रखें (या शामिल करें). इस शर्त को तय करना उपयोगी हो सकता है अगर, उदाहरण के लिए, आपका मॉड्यूल पैसे चुकाने का ऐसा तरीका लागू करता है जो कुछ इलाकों में उपलब्ध नहीं है.

इस संदर्भ में, डिवाइस का देश आम तौर पर उपयोगकर्ता का चुना हुआ होता है उनके Google Play खाते पर रजिस्टर किया गया बिलिंग पता.

अपने मॉड्यूल के लिए देश तय करने के लिए, सुविधा में इन्हें शामिल करें का मेनिफ़ेस्ट भी है.

<dist:conditions>
   <!-- Set to "true" to specify countries to exclude from downloading
   this module at app install-time. By default, modules are available
   for download to all user countries. -->
  <dist:user-countries dist:exclude="true">
    <!-- Specifies the two-letter  CLDR country code for regions that should
    not download the module at app install-time. -->
    <dist:country dist:code="CN"/>
    <dist:country dist:code="HK"/>
  </dist:user-countries>
</dist:conditions>

एपीआई लेवल के लिए शर्तें तय करें

डिवाइस के एपीआई लेवल के आधार पर शर्त तय करना तब फ़ायदेमंद हो सकता है, जब सुविधा मॉड्यूल ऐसे एपीआई पर निर्भर करता है जो कुछ ही Android प्लैटफ़ॉर्म के वर्शन पर काम करता है.

डिवाइस के कम से कम या ज़्यादा से ज़्यादा एपीआई लेवल के आधार पर शर्त सेट करने के लिए, अपडेट करें.

<dist:conditions>
    <!-- Specifies the minimum API level that the device must satisfy
         in order to download your module at app install-time. The API level you
         specify must be greater or equal to the module's own minSdkVersion. -->
   <dist:min-sdk dist:value="21"/>
    <!-- Specifies the maximum API level that the device cannot exceed
         in order to download your module at app install-time. The API level you
         specify must be less than or equal to the module's own maxSdkVersion. -->
   <dist:max-sdk dist:value="24"/>
</dist:conditions>