এসডিকে এক্সটেনশনগুলো মডিউলার সিস্টেম কম্পোনেন্ট ব্যবহার করে পূর্বে প্রকাশিত নির্দিষ্ট কিছু এপিআই লেভেলের জন্য পাবলিক এসডিকে-তে এপিআই যুক্ত করে। যখন ব্যবহারকারীরা গুগল প্লে সিস্টেম আপডেটের মাধ্যমে মডিউল আপডেট পান, তখন এই এপিআইগুলো ডিভাইসে পৌঁছে দেওয়া হয়। অ্যাপ ডেভেলপাররা তাদের অ্যাপে এই এপিআইগুলো ব্যবহার করে এমন অতিরিক্ত কার্যকারিতা যোগ করতে পারেন, যা অ্যান্ড্রয়েডের এই পূর্ববর্তী সংস্করণগুলোর এসডিকে-তে মূলত উপলব্ধ ছিল না।
এপিআই ভার্সনিং
অ্যান্ড্রয়েড ১১ (এপিআই লেভেল ৩০) থেকে শুরু করে, অ্যান্ড্রয়েড ডিভাইসগুলোতে এক সেট এসডিকে এক্সটেনশন অন্তর্ভুক্ত থাকে। যখন নতুন এপিআই যোগ করা হয়, তখন সেগুলোকে একটি এপিআই লেভেলে অন্তর্ভুক্ত করা হয়, তবে সেগুলো কোনো নির্দিষ্ট সংস্করণের এসডিকে এক্সটেনশনেও অন্তর্ভুক্ত হতে পারে। উদাহরণস্বরূপ, ফটো পিকারের জন্য ACTION_PICK_IMAGES এপিআইটি অ্যান্ড্রয়েড ১৩ (এপিআই লেভেল ৩৩)-এ পাবলিক এসডিকে-তে যোগ করা হয়েছিল, কিন্তু এটি আর এক্সটেনশনস ভার্সন ২ থেকে শুরু করে এসডিকে এক্সটেনশনের মাধ্যমেও উপলব্ধ। এসডিকে এক্সটেনশনের নামগুলো একটি ইন্টিজার কনস্ট্যান্টের সাথে সঙ্গতিপূর্ণ—হয় Build.VERSION_CODES থেকে নেওয়া একটি কনস্ট্যান্ট, অথবা SdkExtensions ক্লাসে সংজ্ঞায়িত একটি কনস্ট্যান্ট (যেমন SdkExtensions.AD_SERVICES )।
কোন SDK এক্সটেনশনগুলি ব্যবহার করতে হবে তা নির্ধারণ করুন
এসডিকে এক্সটেনশন এপিআই ব্যবহার করার আগে, আপনাকে প্রথমে নির্ধারণ করতে হবে কোন কোন এসডিকে-তে আপনার অ্যাপের প্রয়োজন অনুযায়ী এপিআইগুলো অন্তর্ভুক্ত রয়েছে।
এসডিকে এক্সটেনশন এপিআই-এর রেফারেন্স পেজগুলোতে সবচেয়ে পুরোনো এসডিকে এক্সটেনশন সংস্করণটি উল্লেখ করা থাকে, যা আপনার অ্যাপ কোনো এপিআই অ্যাক্সেস করার জন্য ব্যবহার করতে পারে। যদি ডকুমেন্টেশনে কোনো অ্যান্ড্রয়েড প্ল্যাটফর্ম সংস্করণও (এপিআই লেভেল দ্বারা উল্লিখিত) উল্লেখ করা থাকে, তাহলে সেই এপিআইটি অ্যান্ড্রয়েডের সেই সংস্করণ বা তার চেয়ে উচ্চতর সংস্করণে চালিত সমস্ত ডিভাইসের জন্যও উপলব্ধ থাকবে।
উদাহরণস্বরূপ, ACTION_PICK_IMAGES সাধারণত অ্যান্ড্রয়েড ১৩ (এপিআই লেভেল ৩৩) থেকে শুরু করে পাবলিক এসডিকে-তে উপলব্ধ, তবে এটি অ্যান্ড্রয়েড ১১ (এপিআই লেভেল ৩০)-এর মতো পুরোনো ডিভাইসেও পাওয়া যায়, যদি ডিভাইসটিতে অন্তত আর এক্সটেনশনস ভার্সন ২ থাকে:

এই API ব্যবহার করার জন্য, আপনাকে কমপক্ষে API লেভেল ৩৩ অথবা কমপক্ষে এক্সটেনশন লেভেল ২-এর কোনো SDK-এর সাথে কম্পাইল করতে হবে।
এক্সটেনশন এসডিকে ব্যবহার করতে, এই ধাপগুলো অনুসরণ করুন:
- আপনি যে API-গুলো ব্যবহার করতে চান, সেগুলোর জন্য ফিচার ডকুমেন্টেশন এবং API রেফারেন্স দেখে আপনার প্রয়োজনীয় ন্যূনতম এক্সটেনশন ভার্সনটি জেনে নিন।
- আপনার ফিচার সেটের জন্য প্রয়োজনীয় এক্সটেনশন ভার্সন নির্ধারণ করার পর, অ্যান্ড্রয়েড স্টুডিওতে এসডিকে ম্যানেজার খুলুন।
- সংশ্লিষ্ট এক্সটেনশন সংস্করণ (অথবা একটি উচ্চতর সংস্করণ, যেহেতু API-গুলো সংযোজনযোগ্য) সহ Android SDK Platform এন্ট্রিটি নির্বাচন করুন। উদাহরণস্বরূপ: Android SDK Platform 33, Extension Level 4।
আপনার অ্যাপের
build.gradle.ktsঅথবাbuild.gradleফাইলে এই মানগুলি ঘোষণা করুন:গ্রুভি
android { compileSdk 33 compileSdkExtension 4 ... }
কোটলিন
android { compileSdk = 33 compileSdkExtension = 4 ... }
এসডিকে এক্সটেনশনগুলি উপলব্ধ আছে কিনা তা পরীক্ষা করুন।
আপনার অ্যাপ রানটাইমে কোন কোন SDK এক্সটেনশন ভার্সন উপলব্ধ আছে তা পরীক্ষা করতে পারে, এবং ডেভেলপ করার সময় আপনি অ্যান্ড্রয়েড ডিবাগ ব্রিজ (adb) কমান্ড ব্যবহার করে এক্সটেনশন ভার্সনগুলো খুঁজে দেখতে পারেন, যেমনটি নিম্নলিখিত বিভাগগুলিতে বর্ণনা করা হয়েছে।
রানটাইমে পরীক্ষা করুন
আপনার অ্যাপ getExtensionVersion() মেথড ব্যবহার করে রানটাইমে যাচাই করতে পারে যে, কোনো নির্দিষ্ট প্ল্যাটফর্ম ভার্সনের জন্য SDK এক্সটেনশনগুলো উপলব্ধ আছে কিনা। উদাহরণস্বরূপ, নিচের কোডটি যাচাই করবে যে Android 11 (API লেভেল 30) SDK এক্সটেনশনের জন্য এক্সটেনশন ভার্সন ২ বা তার উচ্চতর সংস্করণ উপলব্ধ আছে কিনা:
কোটলিন
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 উপর ভিত্তি করে একটি চেক করার অনুরূপ:
কোটলিন
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 বা তার বেশি (অ্যান্ড্রয়েড ১৩ বা তার উচ্চতর), সেসব ডিভাইসে পাবলিক SDK-তে ফটো পিকার API রয়েছে, কিন্তু ৩৩-এর কম SDK_INT যুক্ত কিছু ডিভাইসও (যেমন অ্যান্ড্রয়েড ১১, ১২, এবং ১২এল) এই API-গুলো অ্যাক্সেস করতে পারে, যদি তাদের R এক্সটেনশন ভার্সন কমপক্ষে 2 হয়।
এক্ষেত্রে, এক্সটেনশন ভার্সন চেক ব্যবহার করলে আপনার অ্যাপ আরও বেশি ব্যবহারকারীকে অতিরিক্ত কার্যকারিতা প্রদান করতে পারে। কোনো ডিভাইসে নির্দিষ্ট SDK এক্সটেনশন চেক করার জন্য আপনি যে সমস্ত কনস্ট্যান্ট ব্যবহার করতে পারেন, তার তালিকার জন্য SDK এক্সটেনশনের নাম এবং কনস্ট্যান্টগুলো দেখুন।
বিজ্ঞাপন পরিষেবা সম্প্রসারণ
সাধারণ SDK এক্সটেনশনগুলোর মতোই, AdServices API রেফারেন্সেও কখনও কখনও উল্লেখ থাকে যে একটি API হলো "Ad Services Extensions" সংস্করণের অংশ। সাধারণ SDK এক্সটেনশনগুলোর থেকে ভিন্ন, Ad Services Extensions কোনো ডিভাইসে কোন সংস্করণটি রয়েছে তা নির্ধারণ করতে SdkExtensions.AD_SERVICES কনস্ট্যান্টটি ব্যবহার করে।
কোটলিন
fun isAdServicesAvailable(): Boolean { return SdkExtensions.getExtensionVersion(SdkExtensions.AD_SERVICES) >= 4 }
জাভা
public static final boolean isAdServicesAvailable() { return SdkExtensions.getExtensionVersion(SdkExtensions.AD_SERVICES) >= 4; }
অ্যাড সার্ভিসেস এক্সটেনশন-এর বৈশিষ্ট্যসমূহ এবং এটি কীভাবে শুরু করতে হয় সে সম্পর্কে আরও জানতে, অ্যাড সার্ভিসেস এক্সটেনশন ডকুমেন্টেশন দেখুন।
উপযোগিতা পদ্ধতি
কিছু ক্ষেত্রে, SDK এক্সটেনশনগুলির নিজস্ব Jetpack ইউটিলিটি মেথড থাকে, যা দিয়ে তাদের SDK এক্সটেনশন API-গুলির প্রাপ্যতা যাচাই করা যায়। উদাহরণস্বরূপ, আপনি PhotoPicker-এর প্রাপ্যতা যাচাই করার জন্য একটি Jetpack লাইব্রেরি ফাংশন ব্যবহার করতে পারেন, যা শর্তসাপেক্ষ ভার্সন যাচাইয়ের প্রয়োজনীয়তা দূর করে।
সরঞ্জাম সমর্থন
অ্যান্ড্রয়েড স্টুডিও ফ্ল্যামিঙ্গো | ২০২২.২.১ বা তার উচ্চতর সংস্করণে, লিন্ট টুলটি তার নিউএপিআই (NewAPI) চেকের অংশ হিসেবে এসডিকে এক্সটেনশন (SDK Extension) ভার্সনের সমস্যাগুলো স্ক্যান করতে পারে। এছাড়াও, অ্যান্ড্রয়েড স্টুডিও এসডিকে এক্সটেনশন ব্যবহার করে চালু করা এপিআইগুলোর (API) জন্য স্বয়ংক্রিয়ভাবে সঠিক ভার্সন চেক তৈরি করতে পারে।

SDK এক্সটেনশনের নাম এবং ধ্রুবক
নিম্নলিখিত সারণীটি বর্ণনা করে যে, এপিআই রেফারেন্স ডকুমেন্টেশনে তালিকাভুক্ত এসডিকে এক্সটেনশনের বিভিন্ন সেটগুলি কীভাবে সেইসব কনস্ট্যান্টের সাথে ম্যাপ করা হয়, যা আপনার অ্যাপ রানটাইমে এপিআই-এর প্রাপ্যতা পরীক্ষা করতে ব্যবহার করতে পারে। প্রতিটি পাবলিক এসডিকে-এর জন্য এসডিকে এক্সটেনশনের সাধারণ সেটটি Build.VERSION_CODES এর মানগুলির সাথে ম্যাপ করা হয়।
| এসডিকে এক্সটেনশনের নাম | ধ্রুবক | যোগ্য ডিভাইস |
|---|---|---|
| আর এক্সটেনশন | VERSION_CODES.R | অ্যান্ড্রয়েড ১১ (এপিআই লেভেল ৩০) এবং উচ্চতর |
| এস এক্সটেনশন | VERSION_CODES.S | অ্যান্ড্রয়েড ১২ (এপিআই লেভেল ৩১) এবং উচ্চতর |
| টি এক্সটেনশন | VERSION_CODES.TIRAMISU | অ্যান্ড্রয়েড ১৩ (এপিআই লেভেল ৩৩) এবং উচ্চতর |
| ইউ এক্সটেনশন | VERSION_CODES.UPSIDE_DOWN_CAKE | অ্যান্ড্রয়েড ১৪ (এপিআই লেভেল ৩৪) এবং উচ্চতর |
| ভি এক্সটেনশন | VERSION_CODES.VANILLA_ICE_CREAM | অ্যান্ড্রয়েড ১৫ (এপিআই লেভেল ৩৫) এবং উচ্চতর |
| বি এক্সটেনশন | VERSION_CODES.BAKLAVA | অ্যান্ড্রয়েড ১৬ (এপিআই লেভেল ৩৬) এবং উচ্চতর |
| সি এক্সটেনশন | VERSION_CODES.CINNAMON_BUN | অ্যান্ড্রয়েড ১৭ (এপিআই লেভেল ৩৭) এবং উচ্চতর |
| বিজ্ঞাপন পরিষেবা সম্প্রসারণ | SdkExtensions.AD_SERVICES | অ্যান্ড্রয়েড ১৩ (এপিআই লেভেল ৩৩) এবং উচ্চতর |
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 এক্সটেনশন এবং তার সংশ্লিষ্ট এক্সটেনশন সংস্করণ (এই ক্ষেত্রে ৩) দেখানো হয়েছে।