SDK এক্সটেনশন

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

API সংস্করণ

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

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

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

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

উদাহরণস্বরূপ, ACTION_PICK_IMAGES সাধারনত Android 13 (API স্তর 33) থেকে শুরু করে সর্বজনীন SDK-তে উপলব্ধ, তবে ডিভাইসে কমপক্ষে R এক্সটেনশন সংস্করণ 2 থাকলে Android 11 (API স্তর 30) পর্যন্ত ডিভাইসগুলিতেও উপলব্ধ। :

SDK এক্সটেনশনের অংশ এমন APIগুলি API রেফারেন্স ডক্সে তাদের এক্সটেনশন সংস্করণ দেখায়

এই API ব্যবহার করার জন্য, আপনাকে একটি SDK এর বিরুদ্ধে কম্পাইল করতে হবে যা কমপক্ষে API স্তর 33, বা এক্সটেনশন স্তর কমপক্ষে 2।

একটি এক্সটেনশন SDK ব্যবহার করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

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

    গ্রোভি

    android {
        compileSdk 33
        compileSdkExtension 4
        ...
    }
    

    কোটলিন

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

SDK এক্সটেনশনগুলি উপলব্ধ কিনা তা পরীক্ষা করুন৷

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

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

getExtensionVersion() পদ্ধতি ব্যবহার করে প্রদত্ত প্ল্যাটফর্ম সংস্করণের জন্য SDK এক্সটেনশনগুলি উপলব্ধ কিনা তা রানটাইমে আপনার অ্যাপ চেক করতে পারে। উদাহরণস্বরূপ, নিম্নলিখিত কোডটি Android 11 (API স্তর 30) SDK এক্সটেনশনের জন্য এক্সটেনশন সংস্করণ 2 বা উচ্চতর সংস্করণ উপলব্ধ কিনা তা পরীক্ষা করবে:

কোটলিন

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 কিছু ডিভাইসে মিথ্যা ফেরত দেবে৷ ফলস্বরূপ, SDK_INT চেকটি সর্বোত্তম নয়, এবং এক্সটেনশন সংস্করণ চেক হল API উপলব্ধতা পরীক্ষা করার একটি ভাল উপায়৷ 33 (Android 13 বা উচ্চতর) এর থেকে বেশি বা সমান SDK_INT সহ সমস্ত ডিভাইসের পাবলিক SDK-এ ফটো পিকার API আছে, কিন্তু SDK_INT 33-এর কম (যেমন Android 11, 12, এবং 12L) সহ ডিভাইসগুলিও অ্যাক্সেস করতে পারে APIs যদি তাদের R এক্সটেনশন সংস্করণ থাকে অন্তত 2 .

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

বিজ্ঞাপন পরিষেবা এক্সটেনশন

SDK এক্সটেনশনের সাধারণ সেটের মতো, AdServices API রেফারেন্স কখনও কখনও নির্দেশ করে যে একটি API একটি "Ad Services Extensions" সংস্করণের অংশ। সাধারণ SDK এক্সটেনশনের বিপরীতে, বিজ্ঞাপন পরিষেবার এক্সটেনশনগুলি 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 এক্সটেনশনগুলিতে তাদের SDK এক্সটেনশন API-এর উপলব্ধতা পরীক্ষা করার জন্য Jetpack ইউটিলিটি পদ্ধতি রয়েছে। উদাহরণস্বরূপ, আপনি PhotoPicker উপলব্ধতা পরীক্ষা করতে একটি Jetpack লাইব্রেরি ফাংশন ব্যবহার করতে পারেন, যা শর্তসাপেক্ষ সংস্করণ পরীক্ষাগুলিকে বিমূর্ত করে দেয়।

সরঞ্জাম সমর্থন

অ্যান্ড্রয়েড স্টুডিও ফ্ল্যামিঙ্গোতে | 2022.2.1 বা উচ্চতর, লিন্ট টুলটি তার NewAPI চেকের অংশ হিসাবে SDK এক্সটেনশন সংস্করণগুলির সমস্যাগুলির জন্য স্ক্যান করতে পারে। এছাড়াও, অ্যান্ড্রয়েড স্টুডিও SDK এক্সটেনশন ব্যবহার করে চালু করা APIগুলির জন্য সঠিক সংস্করণ চেকগুলি স্বয়ংক্রিয়ভাবে তৈরি করতে পারে।

লিন্ট টুল এমন উদাহরণগুলিকে ফ্ল্যাগ করে যেখানে একটি API কল করার জন্য প্রয়োজনীয় ন্যূনতম SDK এক্সটেনশন সংস্করণ পূরণ করা হয়নি৷

SDK এক্সটেনশনের নাম এবং ধ্রুবক

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

SDK এক্সটেনশনের নাম ধ্রুবক যোগ্য ডিভাইস
আর এক্সটেনশন VERSION_CODES.R Android 11 (API লেভেল 30) এবং উচ্চতর
এস এক্সটেনশন VERSION_CODES.S Android 12 (API লেভেল 31) এবং উচ্চতর
টি এক্সটেনশন VERSION_CODES.TIRAMISU Android 13 (API স্তর 33) এবং উচ্চতর
বিজ্ঞাপন পরিষেবা এক্সটেনশন 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 এক্সটেনশন দেখায় যা ডিভাইসে তাদের সংশ্লিষ্ট এক্সটেনশন সংস্করণ সহ উপস্থিত রয়েছে (এই ক্ষেত্রে 3)।