SDK এক্সটেনশন

SDK এক্সটেনশন মডিউলার সিস্টেম কম্পোনেন্ট ব্যবহার করে আগে রিলিজ হওয়া নির্দিষ্ট API লেভেলের জন্য পাবলিক SDK-তে API যোগ করে। ব্যবহারকারী Google Play সিস্টেম আপডেট-এর মাধ্যমে মডিউল আপডেট পেলে, ডিভাইসে এইসব API ডেলিভার করা হয়। অ্যাপ ডেভেলপাররা তাদের অ্যাপে এইসব API ব্যবহার করে অতিরিক্ত ফাংশনালিটি প্রদান করতে পারেন যা Android-এর এইসব আগের ভার্সনের জন্য SDK-তে মূলত উপলভ্য ছিল না।

API ভার্সনিং

Android 11 (API লেভেল ৩০) থেকে শুরু করে, Android ডিভাইসে SDK এক্সটেনশনের একটি সেট অন্তর্ভুক্ত থাকে। নতুন API যোগ করা হলে, সেগুলি API লেভেলে অন্তর্ভুক্ত করা হয়, তবে কোনও নির্দিষ্ট ভার্সনের SDK এক্সটেনশনেও অন্তর্ভুক্ত করা হতে পারে। যেমন, ACTION_PICK_IMAGES ফটো পিকারের জন্য API, Android 13 (API লেভেল 33)-এ পাবলিক SDK-তে যোগ করা হয়েছে, তবে R এক্সটেনশন ভার্সন 2 থেকে শুরু করে SDK এক্সটেনশনের মাধ্যমেও উপলভ্য। SDK এক্সটেনশনের নাম একটি পূর্ণসংখ্যা ধ্রুবকের সাথে সম্পর্কিত–হয় Build.VERSION_CODES থেকে একটি ধ্রুবক, অথবা SdkExtensions ক্লাসে সংজ্ঞায়িত একটি ধ্রুবক (যেমন SdkExtensions.AD_SERVICES)।

কোন SDK এক্সটেনশন ব্যবহার করতে হবে তা নির্ধারণ করুন

SDK এক্সটেনশন API ব্যবহার করার আগে, আপনাকে প্রথমে নির্ধারণ করতে হবে যে কোন SDK-তে আপনার অ্যাপের ব্যবহারের ক্ষেত্রে কাজ করে এমন API অন্তর্ভুক্ত আছে।

SDK এক্সটেনশন API-এর জন্য API রেফারেন্স পৃষ্ঠাগুলি আপনার অ্যাপ কোনও API অ্যাক্সেস করার জন্য ব্যবহার করতে পারে এমন সবচেয়ে পুরনো SDK এক্সটেনশন ভার্সন নির্দিষ্ট করে। এছাড়াও, ডকুমেন্টেশনে Android প্ল্যাটফর্ম ভার্সন (API লেভেল দ্বারা রেফারেন্স করা) উল্লেখ করা থাকলে, Android-এর সেই ভার্সন বা তার পরবর্তী যেকোনও ভার্সন রান করছে এমন সব ডিভাইসের জন্য সেই API উপলভ্য।

যেমন, ACTION_PICK_IMAGES সাধারণত Android 13 (API লেভেল ৩৩) থেকে শুরু করে পাবলিক SDK-তে উপলভ্য, তবে Android 11 (API লেভেল ৩০) পর্যন্ত পুরনো ডিভাইসেও উপলভ্য, যতক্ষণ না ডিভাইসে অন্তত R এক্সটেনশন ভার্সন ২ থাকে:

SDK এক্সটেনশনের অংশ হিসেবে থাকা API-এর এক্সটেনশন ভার্সন API
রেফারেন্স
ডকুমেন্টে দেখানো হয়

এই API ব্যবহার করতে, আপনাকে এমন একটি SDK-এর সাথে কম্পাইল করতে হবে যা কমপক্ষে API লেভেল ৩৩ বা এক্সটেনশন লেভেল কমপক্ষে ২।

এক্সটেনশন SDK ব্যবহার করতে, এইসব ধাপ অনুসরণ করুন:

  1. আপনি যে API ব্যবহার করতে চান তার জন্য ফিচার ডকুমেন্টেশন এবং API রেফারেন্স চেক করে আপনার প্রয়োজনীয় ন্যূনতম এক্সটেনশন ভার্সনটি দেখুন।
  2. আপনার ফিচার সেটের জন্য প্রয়োজনীয় এক্সটেনশন ভার্সন নির্ধারণ করার পরে, Android Studio-তে SDK ম্যানেজার খুলুন।
  3. সংশ্লিষ্ট এক্সটেনশন ভার্সন (বা আরও উন্নত ভার্সন, কারণ API যোগ করা হয়) সহ Android SDK প্ল্যাটফর্ম এন্ট্রি বেছে নিন। যেমন: Android SDK Platform 33, এক্সটেনশন লেভেল ৪।
  4. আপনার অ্যাপের build.gradle.kts বা build.gradle ফাইলে এইসব ভ্যালু ঘোষণা করুন:

    গ্ৰুভি

    android {
        compileSdk 33
        compileSdkExtension 4
        ...
    }

    Kotlin

    android {
        compileSdk = 33
        compileSdkExtension = 4
        ...
    }

SDK এক্সটেনশন উপলভ্য কিনা তা চেক করুন

রানটাইমে কোন SDK এক্সটেনশন ভার্সন উপলভ্য আছে তা আপনার অ্যাপ চেক করতে পারে এবং ডেভেলপ করার সময় আপনি Android ডিবাগ ব্রিজ (adb) কমান্ড ব্যবহার করে এক্সটেনশন ভার্সন দেখতে পারেন, যেমনটি নিম্নলিখিত বিভাগে বর্ণনা করা হয়েছে।

রানটাইমে চেক করুন

আপনার অ্যাপ রানটাইমে চেক করতে পারে যে কোনও নির্দিষ্ট প্ল্যাটফর্ম ভার্সনের জন্য SDK এক্সটেনশন উপলভ্য আছে কিনা। এর জন্য getExtensionVersion() মেথড ব্যবহার করা হয়। যেমন, নিম্নলিখিত কোডটি Android 11 (API লেভেল ৩০) SDK এক্সটেনশনের জন্য এক্সটেনশন ভার্সন ২ বা তার বেশি উপলভ্য কিনা তা চেক করবে:

Kotlin

fun isPhotoPickerAvailable(): Boolean {
    return SdkExtensions.getExtensionVersion(Build.VERSION_CODES.R) >= 2
    // Safely use extension APIs that are available with Android 11 (API level 30) Extensions Version 2, such as Photo Picker.
}

জাভা

public static final boolean isPhotoPickerAvailable() {
    return SdkExtensions.getExtensionVersion(Build.VERSION_CODES.R) >= 2;
}

এটি Build.VERSION.SDK_INT-এর উপর ভিত্তি করে চেক করার মতোই:

Kotlin

fun isPhotoPickerAvailable(): Boolean {
    return Build.VERSION.SDK_INT >= 33
}

জাভা

public static final boolean isPhotoPickerAvailable() {
    return Build.VERSION.SDK_INT >= 33;
}

এই SDK_INT চেক এখনও নিরাপদ এবং বৈধ, তবে এক্সটেনশন API উপলভ্য থাকলেও কিছু ডিভাইসে isPhotoPickerAvailable false রিটার্ন করবে। ফলে, SDK_INT চেক করাটা সেরা উপায় নয় এবং API উপলভ্য কিনা তা চেক করার জন্য এক্সটেনশন ভার্সন চেক করাটা আরও ভাল উপায়। SDK_INT 33-এর থেকে বেশি বা সমান (Android 13 বা তার পরবর্তী ভার্সন) সব ডিভাইসে পাবলিক SDK-তে ফটো পিকার API আছে, তবে SDK_INT ৩৩-এর থেকে কম (যেমন Android 11, 12, এবং 12L) এমন ডিভাইসেও API অ্যাক্সেস করা যেতে পারে যদি সেগুলিতে কমপক্ষে 2-এর R এক্সটেনশন ভার্সন থাকে।

এই ক্ষেত্রে, এক্সটেনশন ভার্সন চেক ব্যবহার করলে আপনার অ্যাপ আরও বেশি ব্যবহারকারীকে অতিরিক্ত কার্যকারিতা প্রদান করতে পারবে। ডিভাইসে নির্দিষ্ট SDK এক্সটেনশন চেক করার জন্য আপনি ব্যবহার করতে পারেন এমন সব কনস্ট্যান্টের তালিকা দেখতে, SDK এক্সটেনশনের নাম ও কনস্ট্যান্ট দেখুন।

Ad Services এক্সটেনশন

SDK এক্সটেনশনের সাধারণ সেটের মতো, AdServices API রেফারেন্স কখনও কখনও ইঙ্গিত করে যে API হল "Ad Services Extensions" ভার্সনের অংশ। সাধারণ SDK এক্সটেনশনের মতো নয়, Ad Services এক্সটেনশন SdkExtensions.AD_SERVICES কনস্ট্যান্ট ব্যবহার করে নির্ধারণ করে যে ডিভাইসে কোন ভার্সন আছে:

Kotlin

fun isAdServicesAvailable(): Boolean {
    return SdkExtensions.getExtensionVersion(SdkExtensions.AD_SERVICES) >= 4
}

জাভা

public static final boolean isAdServicesAvailable() {
    return SdkExtensions.getExtensionVersion(SdkExtensions.AD_SERVICES) >= 4;
}

Ad Services Extensions-এর ফিচার সম্পর্কে আরও জানতে এবং কীভাবে শুরু করবেন তা জানতে, Ad Services Extensions ডকুমেন্টেশন দেখুন।

ইউটিলিটি পদ্ধতি

কিছু ক্ষেত্রে, SDK এক্সটেনশনে Jetpack ইউটিলিটি পদ্ধতি থাকে যা তাদের SDK এক্সটেনশন API-এর উপলভ্যতা চেক করে। যেমন, PhotoPicker উপলভ্য কিনা তা চেক করার জন্য আপনি Jetpack লাইব্রেরি ফাংশন ব্যবহার করতে পারেন, যা শর্তসাপেক্ষ ভার্সন চেক করার বিষয়টি অ্যাবস্ট্র্যাক্ট করে।

টুল সংক্রান্ত সহায়তা

Android Studio Flamingo | 2022.2.1 বা তার পরবর্তী ভার্সনে, লিন্ট টুল NewAPI চেকের অংশ হিসেবে SDK এক্সটেনশন ভার্সনের সমস্যা স্ক্যান করতে পারে। এছাড়াও, Android Studio, SDK এক্সটেনশন ব্যবহার করে লঞ্চ করা API-এর জন্য সঠিক ভার্সন চেক অটোমেটিক জেনারেট করতে পারে।

কোনও API কল করার জন্য প্রয়োজনীয় ন্যূনতম SDK এক্সটেনশন ভার্সন পূরণ না হলে, লিন্ট টুল সেই ইনস্ট্যান্স ফ্ল্যাগ করে।

SDK এক্সটেনশনের নাম ও কনস্ট্যান্ট

রানটাইমে API-এর উপলভ্যতা চেক করার জন্য আপনার অ্যাপ ব্যবহার করতে পারে এমন কনস্ট্যান্টের সাথে API রেফারেন্স ডকুমেন্টেশনে তালিকাভুক্ত SDK এক্সটেনশনের বিভিন্ন সেট কীভাবে ম্যাপ করা হয় তা নিম্নলিখিত সারণীতে বর্ণনা করা হয়েছে। প্রতিটি পাবলিক SDK-এর জন্য SDK এক্সটেনশনের সাধারণ সেট Build.VERSION_CODES-এর ভ্যালুতে ম্যাপ করে।

SDK এক্সটেনশনের নাম স্থির উপযুক্ত ডিভাইস
R এক্সটেনশন VERSION_CODES.R Android 11 (API লেভেল 30) এবং তার পরবর্তী যেকোনও ভার্সন
S এক্সটেনশন VERSION_CODES.S Android 12 (API লেভেল 31) ও তার পরবর্তী যেকোনও ভার্সন
T এক্সটেনশন VERSION_CODES.TIRAMISU Android 13 (API লেভেল 33) এবং তার পরবর্তী যেকোনও ভার্সন
U এক্সটেনশন VERSION_CODES.UPSIDE_DOWN_CAKE Android 14 (API লেভেল 34) ও তার পরবর্তী যেকোনও ভার্সন
V এক্সটেনশন VERSION_CODES.VANILLA_ICE_CREAM Android 15 (API লেভেল 35) এবং তার পরবর্তী যেকোনও ভার্সন
B এক্সটেনশন VERSION_CODES.BAKLAVA Android 16 (API লেভেল 36) এবং তার পরবর্তী যেকোনও ভার্সন
C এক্সটেনশন VERSION_CODES.CINNAMON_BUN Android 17 (API লেভেল 37) এবং তার পরবর্তী যেকোনও ভার্সন
Ad Services এক্সটেনশন SdkExtensions.AD_SERVICES Android 13 (API লেভেল 33) এবং তার পরবর্তী যেকোনও ভার্সন

adb ব্যবহার করে চেক করুন

adb ব্যবহার করে কোনও ডিভাইসে কোন SDK এক্সটেনশন উপলভ্য তা চেক করতে, নিম্নলিখিত কমান্ড রান করুন:

adb shell getprop | grep build.version.extensions

কমান্ড রান করার পরে, আপনি আউটপুট দেখতে পাবেন যা দেখতে অনেকটা এইরকম:

[build.version.extensions.r]: [3] # Android 11 (API level 30) and higher
[build.version.extensions.s]: [3] # Android 12 (API level 31) and higher
[build.version.extensions.t]: [3] # Android 13 (API level 33) and higher

প্রতিটি লাইন ডিভাইসে উপস্থিত SDK এক্সটেনশন এবং তার সাথে সংশ্লিষ্ট এক্সটেনশন ভার্সন (এই ক্ষেত্রে ৩) দেখায়।