শর্তসাপেক্ষ ডেলিভারি কনফিগার করুন

শর্তসাপেক্ষ ডেলিভারি আপনাকে অ্যাপ ইনস্টলের সময় স্বয়ংক্রিয়ভাবে ফিচার মডিউল ডাউনলোড করার জন্য নির্দিষ্ট ডিভাইস কনফিগারেশনের প্রয়োজনীয়তা সেট করতে দেয়। উদাহরণস্বরূপ, আপনি একটি বৈশিষ্ট্য মডিউল কনফিগার করতে পারেন যাতে অগমেন্টেড রিয়েলিটি (AR) এর কার্যকারিতা অন্তর্ভুক্ত থাকে যা শুধুমাত্র AR সমর্থন করে এমন ডিভাইসগুলির জন্য অ্যাপ ইনস্টলে উপলব্ধ।

এই ডেলিভারি মেকানিজম বর্তমানে নিম্নলিখিত ডিভাইস কনফিগারেশনের উপর ভিত্তি করে অ্যাপ ইনস্টল-টাইমে একটি মডিউল ডাউনলোড নিয়ন্ত্রণ করতে সমর্থন করে:

যদি কোনও ডিভাইস আপনার নির্দিষ্ট করা সমস্ত প্রয়োজনীয়তা পূরণ না করে, তাহলে অ্যাপ ইনস্টলের সময় মডিউলটি ডাউনলোড করা হয় না। যাইহোক, আপনার অ্যাপ পরে প্লে কোর SDK ব্যবহার করে চাহিদা অনুযায়ী মডিউল ডাউনলোড করার অনুরোধ করতে পারে।

আপনি শুরু করার আগে, নিশ্চিত করুন যে আপনি Android স্টুডিও 3.5 বা উচ্চতর ব্যবহার করছেন। নিম্নলিখিত বিভাগগুলি আপনাকে দেখায় যে কীভাবে আপনার বৈশিষ্ট্য মডিউলগুলিতে শর্তসাপেক্ষ বিতরণের জন্য সমর্থন যোগ করতে হয়।

শর্তসাপেক্ষ ডেলিভারি অপশন সহ একটি নতুন মডিউল যোগ করুন

শর্তসাপেক্ষ ডেলিভারি সহ একটি নতুন বৈশিষ্ট্য মডিউল তৈরি করার সবচেয়ে সহজ উপায় হল নতুন মডিউল উইজার্ডের মাধ্যমে, নিম্নরূপ:

  1. নতুন মডিউল ডায়ালগ খুলতে, মেনু বার থেকে ফাইল > নতুন > নতুন মডিউল নির্বাচন করুন।
  2. নতুন মডিউল ডায়ালগে, ডায়নামিক বৈশিষ্ট্য মডিউল নির্বাচন করুন এবং পরবর্তী ক্লিক করুন।
  3. আপনার মডিউলটি আপনার স্বাভাবিকভাবে কনফিগার করুন এবং পরবর্তী ক্লিক করুন।
  4. মডিউল ডাউনলোড বিকল্প বিভাগে, নিম্নলিখিতটি সম্পূর্ণ করুন:

    1. 50 অক্ষর পর্যন্ত ব্যবহার করে মডিউল শিরোনাম নির্দিষ্ট করুন। প্ল্যাটফর্মটি ব্যবহারকারীদের কাছে মডিউলটি সনাক্ত করতে এই শিরোনামটি ব্যবহার করে যখন, উদাহরণস্বরূপ, ব্যবহারকারী মডিউলটি ডাউনলোড করতে চান কিনা তা নিশ্চিত করে৷ এই কারণে, আপনার অ্যাপের বেস মডিউলে মডিউল শিরোনামটিকে একটি স্ট্রিং রিসোর্স হিসেবে অন্তর্ভুক্ত করতে হবে, যা আপনি অনুবাদ করতে পারেন। অ্যান্ড্রয়েড স্টুডিও ব্যবহার করে মডিউল তৈরি করার সময়, IDE আপনার জন্য বেস মডিউলে স্ট্রিং রিসোর্স যোগ করে এবং ফিচার মডিউলের ম্যানিফেস্টে নিম্নলিখিত এন্ট্রি ইনজেক্ট করে:

      <dist:module
          ...
          dist:title="@string/feature_title">
      </dist:module>
      
    2. ইনস্টল-টাইম ইনক্লুশনের অধীনে ড্রপডাউন মেনুতে, নির্দিষ্ট বৈশিষ্ট্যযুক্ত ডিভাইসগুলির জন্য শুধুমাত্র অ্যাপ ইনস্টলে মডিউল অন্তর্ভুক্ত করুন নির্বাচন করুন, যা একটি মডিউল তৈরি করে যা অ্যাপ ইনস্টল-টাইমে আপনার অ্যাপের সাথে অন্তর্ভুক্ত করা হয় শুধুমাত্র নির্দিষ্ট কনফিগারেশন সহ ডিভাইসগুলিতে যা আপনি নির্দিষ্ট করতে পারেন, যেমন ডিভাইস বৈশিষ্ট্য বা দেশ। অ্যান্ড্রয়েড স্টুডিও আপনার পছন্দকে প্রতিফলিত করতে মডিউলের ম্যানিফেস্টে নিম্নলিখিতগুলি ইনজেক্ট করে:

      <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. আপনি যদি মডিউলটির স্বয়ংক্রিয় ডাউনলোড নির্দিষ্ট দেশে বা ন্যূনতম API স্তরে সীমিত করতে চান, তাহলে মডিউলটি তৈরি সম্পূর্ণ করতে সমাপ্ত ক্লিক করুন এবং তারপরে দেশ বা সর্বনিম্ন API স্তরের উপর ভিত্তি করে শর্তগুলি কীভাবে নির্দিষ্ট করতে হয় সে সম্পর্কে বিভাগটি পড়ুন। অন্যথায়, ইনস্টল করার সময় মডিউলটি ডাউনলোড করার জন্য একটি ডিভাইসের প্রয়োজন এমন একটি বৈশিষ্ট্য যোগ করতে + ডিভাইস বৈশিষ্ট্যটিতে ক্লিক করুন।

    4. ডিভাইস-ফিচারের পাশে, ড্রপডাউন মেনু থেকে নিম্নলিখিত বিকল্পগুলির মধ্যে একটি নির্বাচন করুন এবং এর মান নির্দিষ্ট করুন:

      • নাম: আপনাকে একটি হার্ডওয়্যার বা সফ্টওয়্যার বৈশিষ্ট্য নির্দিষ্ট করার অনুমতি দেয় যা একটি ডিভাইসের ইনস্টল করার সময় মডিউলটি ডাউনলোড করার জন্য প্রয়োজন৷ যে বৈশিষ্ট্যগুলি শর্তসাপেক্ষে ডেলিভারি সমর্থন করে তা PackageManager দ্বারা FEATURE_* ধ্রুবক হিসাবে তালিকাভুক্ত বৈশিষ্ট্যগুলির মতই। আপনি যদি এই বিকল্পটি নির্বাচন করেন, তাহলে ড্রপডাউনের পাশের ক্ষেত্রটিতে "ব্লুটুথ" এর মতো বৈশিষ্ট্যের ধ্রুবক মানের যেকোনো অংশ টাইপ করা শুরু করুন এবং প্রদর্শিত পরামর্শগুলির মধ্যে একটি নির্বাচন করুন৷
      • OpenGL ES সংস্করণ: আপনাকে OpenGL ES-এর একটি সংস্করণ নির্দিষ্ট করার অনুমতি দেয় যা একটি ডিভাইসের জন্য ইনস্টল করার সময় মডিউলটি ডাউনলোড করার জন্য প্রয়োজন। আপনি যদি এই বিকল্পটি নির্বাচন করেন, ড্রপডাউনের পাশের ক্ষেত্রটিতে "0x00030001" এর মতো সংস্করণটি টাইপ করা শুরু করুন এবং প্রদর্শিত পরামর্শগুলির মধ্যে একটি নির্বাচন করুন৷
    5. আপনি উপলব্ধ ডিভাইস বৈশিষ্ট্যের উপর ভিত্তি করে একাধিক শর্ত যোগ করতে চান, আপনি নির্দিষ্ট করতে চান প্রতিটি ডিভাইস বৈশিষ্ট্য শর্তের জন্য + ডিভাইস বৈশিষ্ট্য ক্লিক করুন।

    6. আপনি যদি চান যে এই মডিউলটি Android 4.4 (API লেভেল 20) এবং তার নিচের এবং মাল্টি-APK-তে অন্তর্ভুক্ত ডিভাইসগুলিতে উপলব্ধ হতে চান তাহলে Fusing- এর পাশের বাক্সটি চেক করুন৷ এর মানে হল আপনি এই মডিউলটির জন্য চাহিদার আচরণ সক্ষম করতে পারেন এবং বিভক্ত APK ডাউনলোড এবং ইনস্টল করা সমর্থন করে না এমন ডিভাইসগুলি থেকে এটি বাদ দিতে ফিউজিং অক্ষম করতে পারেন৷ অ্যান্ড্রয়েড স্টুডিও আপনার পছন্দকে প্রতিফলিত করতে মডিউলের ম্যানিফেস্টে নিম্নলিখিতগুলি ইনজেক্ট করে:

      <dist:module ...>
          <dist:fusing dist:include="true | false" />
      </dist:module>
      
  5. আপনি মডিউল ডাউনলোড বিকল্পগুলি কনফিগার করার পরে, শেষ ক্লিক করুন।

মনে রাখবেন যে অ্যান্ড্রয়েড গ্রেডল প্লাগইন ডায়নামিক-ফিচার মডিউল থেকে লিন্ট চালানো সমর্থন করে না। সংশ্লিষ্ট অ্যাপ্লিকেশন মডিউল থেকে লিন্ট চালানো তার গতিশীল-বৈশিষ্ট্য মডিউলগুলিতে লিন্ট চালাবে এবং অ্যাপের লিন্ট রিপোর্টে সমস্ত সমস্যা অন্তর্ভুক্ত করবে।

একটি বিদ্যমান বৈশিষ্ট্য মডিউল শর্তসাপেক্ষ বিতরণ বিকল্প যোগ করুন

আপনি সহজেই মডিউলের ম্যানিফেস্টের মাধ্যমে বিদ্যমান বৈশিষ্ট্য মডিউলে শর্তসাপেক্ষ বিতরণ বিকল্পগুলি যোগ করতে পারেন। যাইহোক, আপনাকে প্রথমে অন্য ডেলিভারি বিকল্পগুলির সাথে শর্তসাপেক্ষ ডেলিভারি বিকল্পগুলির সামঞ্জস্য সম্পর্কে পড়তে হবে যা আপনি ইতিমধ্যে সক্ষম করেছেন৷

শুরু করার জন্য, আপনাকে প্রথমে আপনার ম্যানিফেস্টটিকে নতুন <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>

নীচের বিভাগগুলি শর্তসাপেক্ষ বিতরণের জন্য অন্যান্য বিকল্পগুলি নিয়ে আলোচনা করে, যেমন দেশ অনুসারে বা সর্বনিম্ন API স্তর৷

অন্যান্য মডিউল ডাউনলোড বিকল্পগুলির সাথে সামঞ্জস্যপূর্ণ

যেহেতু বৈশিষ্ট্য মডিউলগুলি ব্যবহারকারীর ডিভাইসে প্রতিটি বৈশিষ্ট্য কীভাবে বিতরণ করা হয় তা কনফিগার করার জন্য একাধিক বিকল্প অফার করে, তাই শর্তযুক্ত বিতরণ বিকল্পগুলি অন্যান্য সেটিংস দ্বারা কীভাবে প্রভাবিত হয় তা বোঝা গুরুত্বপূর্ণ। নিম্নলিখিত সারণীটি অন্যান্য মডিউল ডাউনলোড বিকল্পগুলির সাথে শর্তসাপেক্ষ বিতরণের সামঞ্জস্যের সংক্ষিপ্তসার করে।

মডিউল ডাউনলোড বিকল্প শর্তসাপেক্ষ ডেলিভারির সাথে সামঞ্জস্য
ফিউজিং ( <dist:fusing dist:include="true"/> ) যদি একটি মডিউল এই বিকল্পটিকে সত্য হিসাবে সেট করে, তাহলে API স্তর 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>

API স্তরের জন্য শর্তগুলি নির্দিষ্ট করুন৷

একটি ডিভাইসের API স্তরের উপর ভিত্তি করে একটি শর্ত নির্দিষ্ট করা কার্যকর হতে পারে যদি একটি বৈশিষ্ট্য মডিউল API-এর উপর নির্ভর করে যা শুধুমাত্র Android প্ল্যাটফর্মের নির্দিষ্ট সংস্করণে উপলব্ধ।

সর্বনিম্ন বা সর্বোচ্চ ডিভাইস API স্তরের উপর ভিত্তি করে একটি শর্ত সেট করতে, আপনার বৈশিষ্ট্য মডিউলের ম্যানিফেস্টে নিম্নলিখিতগুলি অন্তর্ভুক্ত করুন৷

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