API Level: এটি কী, API সংস্করণ এবং targetSdk

লেখক: IT Sectr প্রকাশিত: 2026-02-08 পড়ার সময়: 12 মিনিট

API Level Android একটি পূর্ণসংখ্যা শনাক্তকারী যা Android প্ল্যাটফর্মের একটি নির্দিষ্ট রিলিজের সাথে অনন্যভাবে মিলে যায়। OS-এর প্রতিটি সংস্করণের নিজস্ব অনন্য নম্বর রয়েছে: Android 14 = API 34, Android 15 = API 35। ডেভেলপার build.gradle-এ তিনটি প্যারামিটার — minSdkVersion, targetSdkVersion এবং compileSdkVersion — পরিচালনা করে সামঞ্জস্য এবং নতুন বৈশিষ্ট্যগুলিতে অ্যাক্সেস নিয়ন্ত্রণ করতে। Android Developers-এর মতে, সঠিক API Level নির্বাচন করা নিরাপত্তা এবং দর্শক কভারেজের জন্য গুরুত্বপূর্ণ।

মূল বিষয়

  • API Level — Android API সংস্করণের পূর্ণসংখ্যা শনাক্তকারী, API 1 (Android 1.0) থেকে API 36 (Android 16) পর্যন্ত
  • minSdkVersion — অ্যাপ ইনস্টল করার জন্য ন্যূনতম Android সংস্করণ, দর্শক কভারেজ নির্ধারণ করে
  • targetSdkVersion — যে সংস্করণের বিরুদ্ধে অ্যাপ পরীক্ষা করা হয়েছে; সেই সংস্করণের আচরণগত পরিবর্তন অন্তর্ভুক্ত
  • compileSdkVersion — কম্পাইলেশনের জন্য SDK সংস্করণ; targetSdk থেকে >= হতে হবে, নতুন API-তে অ্যাক্সেস দেয়
  • Google Play-এর targetSdkVersion বর্তমান API Level থেকে 1 বছরের বেশি পুরানো হওয়া যাবে না

API Level Android কী?

API Level Android একটি পূর্ণসংখ্যা শনাক্তকারী যা Android Framework API-এর প্রতিটি পাবলিক রিলিজে বরাদ্দ করা হয়। প্রথম রিলিজ Android 1.0-এ API Level 1 ছিল, Android 1.5 — API Level 3, Android 2.2 — API Level 8, Android 4.0 — API Level 14, Android 8.0 — API Level 26, Android 12 — API Level 31, Android 14 — API Level 34, Android 15 — API Level 35, Android 16 (2025) — API Level 36। প্রতিটি নতুন API Level নতুন ক্লাস, মেথড, কনস্ট্যান্ট, অনুমতি যোগ করতে পারে এবং বিদ্যমানগুলির আচরণ পরিবর্তন করতে পারে।

API Level প্রতিটি রিলিজের সাথে কঠোরভাবে 1 করে বাড়ে না। উদাহরণস্বরূপ, Android 4.4W (Wear)-এ API 20 আছে, যেখানে Android 5.0-এ API 21। ফাঁকগুলি অভ্যন্তরীণ পুনরাবৃত্তি এবং Wear OS ডিভাইসগুলির সাথে সম্পর্কিত। ডেভেলপারের জন্য সংস্করণের নাম (KitKat, Lollipop, Tiramisu) নয়, বরং এর API Level জানা গুরুত্বপূর্ণ — এটি কোডে সামঞ্জস্য পরীক্ষার জন্য ব্যবহৃত হয়।

API Level-এর মূল উদ্দেশ্য হল পশ্চাৎগামী সামঞ্জস্য। API 34-এর বিরুদ্ধে কম্পাইল করা একটি অ্যাপ API 34 এবং তার নীচের ডিভাইসগুলিতে চলতে পারে (যদি এটি পরীক্ষা ছাড়াই নতুন API ব্যবহার না করে)। Android Runtime (ART) সিস্টেম স্তরে API কল পরীক্ষা করে এবং অ্যাপের targetSdkVersion-এর উপর ভিত্তি করে আচরণগত পরিবর্তন প্রয়োগ করে।

Android কীভাবে API Level পরিচালনা করে

অ্যাপ ইনস্টল করার সময়, PackageManager পরীক্ষা করে যে ডিভাইসের API Level AndroidManifest.xml থেকে minSdkVersion >= কিনা। যদি শর্ত পূরণ না হয় — তাহলে ইনস্টলেশন "App not installed" বার্তা দিয়ে ব্লক হয়ে যায়। রানটাইম চলাকালীন, Android Runtime সেই API কলগুলি পর্যবেক্ষণ করে যার জন্য উচ্চতর API Level প্রয়োজন এবং NoSuchMethodError বা UnsatisfiedLinkError তৈরি করে যদি মেথডটি বর্তমান সংস্করণে উপস্থিত না থাকে।

উপাদানAPI Level পরিচালনায় ভূমিকা
PackageManagerইনস্টলেশনের সময় minSdkVersion পরীক্ষা করে
Android Runtime (ART)রানটাইমে API সামঞ্জস্য পরীক্ষা করে
Google Play Storeডিভাইস API Level অনুসারে অ্যাপ ফিল্টার করে
SDK Managerপ্রয়োজনীয় API Level-এ কম্পাইলেশনের জন্য প্ল্যাটফর্ম ডাউনলোড করে
lintস্ট্যাটিক বিশ্লেষক, minSdk-এর উপরে API ব্যবহার সম্পর্কে সতর্ক করে

minSdk, targetSdk, compileSdk: পার্থক্য এবং প্রতিটি প্যারামিটারের ভূমিকা

build.gradle ফাইলে (Module: app), ডেভেলপার তিনটি API Level প্যারামিটার নির্দিষ্ট করে: minSdkVersion, targetSdkVersion এবং compileSdkVersion। এগুলিকে বিভ্রান্ত করা শিক্ষানবিস Android ডেভেলপারদের সবচেয়ে সাধারণ ভুলগুলির মধ্যে একটি। প্রতিটি প্যারামিটার সামঞ্জস্যের একটি ভিন্ন দিকের জন্য দায়ী এবং তাদের মান সামঞ্জস্যপূর্ণ হতে হবে।

minSdkVersion

minSdkVersion হল ন্যূনতম API Level যেখানে অ্যাপটি ইনস্টল এবং চালানো যেতে পারে। minSdk-এর চেয়ে কম API Level-যুক্ত ডিভাইসগুলি Google Play-তে অ্যাপটি দেখতে পায় না এবং এটি ইনস্টল করতে পারে না। মান লক্ষ্য দর্শকের উপর ভিত্তি করে নির্বাচিত হয়: minSdk 21 (Android 5.0) 97% ডিভাইস কভার করে, minSdk 26 (Android 8.0) — প্রায় 85%, minSdk 31 (Android 12) — প্রায় 55% (Android Studio Distribution Dashboard, 2026-এর তথ্য)। minSdk যত কম, কভারেজ তত বেশি, কিন্তু পশ্চাৎগামী সামঞ্জস্য কোড তত বেশি প্রয়োজন।

targetSdkVersion

targetSdkVersion হল সেই API Level যার বিরুদ্ধে অ্যাপটি পরীক্ষা করা হয়েছে। Android আচরণগত পরিবর্তন প্রয়োগ করতে targetSdk ব্যবহার করে: যদি অ্যাপ targetSdk 33 নির্দিষ্ট করে, সিস্টেম API 33-এ প্রবর্তিত সমস্ত আচরণগত পরিবর্তন সক্ষম করে। যদি targetSdk 31 হয়, সিস্টেম API 32-33 পরিবর্তনগুলি প্রয়োগ করে না, পুরানো আচরণের সাথে সামঞ্জস্য বজায় রাখে। এটি নিরাপত্তার জন্য সবচেয়ে গুরুত্বপূর্ণ প্যারামিটার: Google Play-এর targetSdk বর্তমান API Level থেকে 1 বছরের বেশি পুরানো হওয়া যাবে না।

compileSdkVersion

compileSdkVersion হল Android SDK-এর সংস্করণ যার বিরুদ্ধে কোড কম্পাইল করা হয়। এটি নির্ধারণ করে কম্পাইলেশনের সময় কোন API উপলব্ধ। compileSdk targetSdk থেকে >= হতে হবে এবং আদর্শভাবে সর্বশেষ স্থিতিশীল API Level-এর সমান হওয়া উচিত। compileSdk বাড়ানো রানটাইম আচরণকে প্রভাবিত করে না — শুধুমাত্র কম্পাইলারের জন্য নতুন API-এর উপলব্ধতা। compileSdk বাড়ানোর পরে, আপনাকে অবহিত API এবং নতুন অনুমতি প্রয়োজনীয়তার জন্য কোড পরীক্ষা করতে হবে।

kotlin
// build.gradle.kts — API Level কনফিগারেশন উদাহরণ
plugins {
    id("com.android.application") version "8.7.0"
    id("org.jetbrains.kotlin.android") version "2.1.0"
}

android {
    namespace = "com.example.myapp"
    compileSdk = 36  // Android 16

    defaultConfig {
        applicationId = "com.example.myapp"
        minSdk = 26      // Android 8.0
        targetSdk = 36    // Android 16
        versionCode = 1
        versionName = "1.0.0"
    }

    buildTypes {
        release {
            isMinifyEnabled = true
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }
    }

    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_17
        targetCompatibility = JavaVersion.VERSION_17
    }

    kotlinOptions {
        jvmTarget = "17"
    }
}

dependencies {
    implementation("androidx.core:core-ktx:1.15.0")
    implementation("androidx.appcompat:appcompat:1.7.0")
    implementation("androidx.activity:activity-ktx:1.9.3")
}

build.gradle.kts উদাহরণে, compileSdk = 36 (লেখার সময় সর্বশেষ), targetSdk = 36, minSdk = 26 (Android 8.0)। compileSdk 36 সমস্ত Android 16 API-তে অ্যাক্সেস দেয়। targetSdk 36 সমস্ত Android 16 আচরণগত পরিবর্তন সক্ষম করে। minSdk 26 ~85% ডিভাইস কভার করে। AndroidX Activity KTX এবং AppCompat ফ্র্যাগমেন্ট এবং থিমের জন্য পশ্চাৎগামী সামঞ্জস্য প্রদান করে।

AndroidManifest.xml

minSdk এবং targetSdk প্যারামিটারগুলি AndroidManifest.xml-এও নির্দিষ্ট করা যেতে পারে, কিন্তু আধুনিক প্রকল্পগুলি build.gradle ব্যবহার করে — Gradle-এর মান ম্যানিফেস্টকে ওভাররাইড করে। ম্যানিফেস্টে, লাইব্রেরি এবং মডিউলগুলির জন্য নির্দিষ্ট করা উপযোগী হতে পারে যেগুলি Gradle build config ব্যবহার করে না।

আচরণগত পরিবর্তন: targetSdk কীভাবে অ্যাপের আচরণকে প্রভাবিত করে

আচরণগত পরিবর্তন হল Android সিস্টেমের কাজ করার পদ্ধতিতে পরিবর্তন যা শুধুমাত্র targetSdk >= একটি নির্দিষ্ট API Level-যুক্ত অ্যাপগুলিতে প্রয়োগ করা হয়। প্রতিটি নতুন Android রিলিজ আচরণগত পরিবর্তন নিয়ে আসে যা বিদ্যমান অ্যাপগুলিকে ভেঙে দিতে পারে যদি সেগুলি আপডেট না করা হয়।এটি Android-এর একটি মূল নিরাপত্তা ব্যবস্থা: পুরানো অ্যাপগুলি আগের মতো কাজ করতে থাকে, নতুনগুলি বর্তমান নিয়ম অনুসরণ করে।

সংস্করণ অনুসারে প্রধান আচরণগত পরিবর্তন

Android 10 (API 29) — Scoped Storage: targetSdk 29+-যুক্ত অ্যাপগুলির শেয়ার্ড ফাইল সিস্টেমে সরাসরি অ্যাক্সেস নেই, শুধুমাত্র MediaStore, SAF বা নিজস্ব স্টোরেজের মাধ্যমে। Android 11 (API 30) — Package Visibility: প্যাকেজ ফিল্টার, অ্যাপগুলি শুধুমাত্র সেই ইনস্টল করা প্যাকেজগুলি দেখে যাদের সাথে তারা ইন্টারঅ্যাক্ট করে। Android 12 (API 31) — Foreground Service Notification: সমস্ত ফোরগ্রাউন্ড সার্ভিস শুরু হওয়ার 10 সেকেন্ডের মধ্যে একটি বিজ্ঞপ্তি দেখাতে বাধ্য। Android 13 (API 33) — POST_NOTIFICATIONS: পুশ বিজ্ঞপ্তিগুলির জন্য রানটাইম অনুমতি। Android 14 (API 34) — Foreground Service Types: ম্যানিফেস্টে ফোরগ্রাউন্ড সার্ভিসের ধরনের বাধ্যতামূলক ঘোষণা।

kotlin
// Android 13 (API 33) আচরণগত পরিবর্তন পরিচালনা: POST_NOTIFICATIONS
import android.Manifest
import android.content.pm.PackageManager
import android.os.Build
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.content.ContextCompat

class NotificationHelper {

    fun requestNotificationPermission(activity: MainActivity) {
        // POST_NOTIFICATIONS অনুমতি শুধুমাত্র API 33+ এর সাথে কাজ করে
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) {
            return  // API 33-এর নীচে অনুমতি প্রয়োজন নেই
        }

        when {
            ContextCompat.checkSelfPermission(
                activity,
                Manifest.permission.POST_NOTIFICATIONS
            ) == PackageManager.PERMISSION_GRANTED -> {
                // অনুমতি ইতিমধ্যে দেওয়া হয়েছে, বিজ্ঞপ্তি পাঠাতে পারেন
                showNotification(activity)
            }

            activity.shouldShowRequestPermissionRationale(
                Manifest.permission.POST_NOTIFICATIONS
            ) -> {
                // ব্যাখ্যা দেখান কেন অনুমতি প্রয়োজন
                activity.showRationale()
            }

            else -> {
                // অনুমতি অনুরোধ করুন
                activity.requestPermissionLauncher.launch(
                    Manifest.permission.POST_NOTIFICATIONS
                )
            }
        }
    }

    private fun showNotification(context: Context) {
        // বিজ্ঞপ্তি তৈরি এবং প্রদর্শন করুন
        val notification = android.app.Notification.Builder(context, "default_channel")
            .setSmallIcon(android.R.drawable.ic_dialog_info)
            .setContentTitle("বিজ্ঞপ্তি")
            .setContentText("নতুন বার্তা")
            .build()
        val manager = context.getSystemService(Context.NOTIFICATION_SERVICE)
            as android.app.NotificationManager
        manager.notify(1, notification)
    }
}

// Activity-তে requestPermissionLauncher নিবন্ধন করুন
class MainActivity : ComponentActivity() {
    val requestPermissionLauncher = registerForActivityResult(
        ActivityResultContracts.RequestPermission()
    ) { isGranted: Boolean ->
        if (isGranted) {
            // অনুমতি প্রাপ্ত হয়েছে
        }
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}

Kotlin-এ POST_NOTIFICATIONS পরিচালনার উদাহরণ: Build.VERSION.SDK_INT >= TIRAMISU পরীক্ষা, ActivityResultContracts.RequestPermission-এর মাধ্যমে রানটাইম অনুমতি অনুরোধ, কলব্যাকে ফলাফল পরিচালনা। এই অনুমতি ছাড়া, targetSdk 33+-যুক্ত অ্যাপ পুশ বিজ্ঞপ্তি দেখাতে পারে না। API 33-এর নীচে অনুমতির প্রয়োজন নেই — পরীক্ষা কোড অনুপলব্ধ API কল করা প্রতিরোধ করে।

Scoped Storage (Android 10+)

Scoped Storage সবচেয়ে গুরুত্বপূর্ণ আচরণগত পরিবর্তনগুলির মধ্যে একটি। API 29 (targetSdk 29+) থেকে শুরু করে, অ্যাপটি Pictures, Downloads, Music এবং Documents ডিরেক্টরিতে সরাসরি ফাইল অ্যাক্সেস পেতে পারে না। পরিবর্তে, মিডিয়ার জন্য MediaStore, নির্বিচার ফাইলের জন্য SAF (Storage Access Framework) এবং নিজস্ব স্টোরেজের জন্য getExternalFilesDir() ব্যবহার করা হয়। ব্যতিক্রম হল MANAGE_EXTERNAL_STORAGE অনুমতি-যুক্ত অ্যাপ, যার জন্য Google Play-এর অনুমোদন প্রয়োজন।

API Level এবং targetSdk-এর জন্য Google Play-এর প্রয়োজনীয়তা

Google Play অ্যাপ প্রকাশের জন্য targetSdkVersion-এর বাধ্যতামূলক প্রয়োজনীয়তা নির্ধারণ করে। আগস্ট 2024 থেকে, Google Play-এর targetSdkVersion >= API 33 (Android 13) প্রয়োজন। প্রতি বছর সীমা বাড়ে: নতুন অ্যাপ এবং আপডেটগুলিকে বর্তমান প্রধান API Level থেকে 1 বছরের বেশি পুরানো targetSdk নির্দিষ্ট করতে হবে না। প্রয়োজনীয়তা লঙ্ঘন করলে প্রকাশনা ব্লক করা হয় এবং স্টোর থেকে অ্যাপ সরিয়ে ফেলা হয়।

কেন Google Play প্রয়োজনীয়তা কঠোর করে

প্রধান কারণ হল নিরাপত্তা। প্রতিটি নতুন Android API Level আচরণগত পরিবর্তন নিয়ে আসে যা আক্রমণের ভেক্টর বন্ধ করে: Scoped Storage (API 29) ফাইল চুরি প্রতিরোধ করে, POST_NOTIFICATIONS (API 33) স্প্যাম বিজ্ঞপ্তি থেকে রক্ষা করে, Foreground Service Types (API 34) লুকানো ব্যাকগ্রাউন্ড সার্ভিস সীমিত করে। কম targetSdk-যুক্ত অ্যাপগুলি এই সুরক্ষাগুলি পায় না এবং ব্যবহারকারীদের জন্য হুমকি হয়ে ওঠে। Google Play আধুনিক ডিভাইসগুলিতে পুরানো অ্যাপের অনুমতি দিতে পারে না।

প্রয়োজনীয়তা মেনে চলার যাচাই

Google Play Console APK/AAB আপলোড করার সময় targetSdkVersion পরীক্ষা করে। যদি targetSdk প্রয়োজনীয়তার চেয়ে কম হয় — কনসোল প্রকাশনাকে বার্তা দিয়ে ব্লক করে: "Your app currently targets API level X and must target at least API level Y"। ডেভেলপারকে build.gradle আপডেট করতে হবে, অ্যাপ পুনরায় কম্পাইল করতে হবে, আচরণগত পরিবর্তন পরীক্ষা করতে হবে এবং পুনরায় আপলোড করতে হবে। সমস্ত নতুন প্রকাশনার জন্য AAB ফরম্যাট সুপারিশ করা হয় (আগস্ট 2021 থেকে বাধ্যতামূলক)।

তারিখন্যূনতম targetSdkAndroid সংস্করণ
আগস্ট 202231Android 12
আগস্ট 202333Android 13
আগস্ট 202433Android 13
আগস্ট 202534Android 14
আগস্ট 2026 (পরিকল্পিত)35Android 15

কোডে API Level যাচাই: Build.VERSION.SDK_INT

Build.VERSION.SDK_INT একটি স্ট্যাটিক পূর্ণসংখ্যা ধ্রুবক যা অ্যাপটি চলমান ডিভাইসের API Level ধারণ করে। এটি রানটাইম Android সংস্করণ পরীক্ষার জন্য প্রাথমিক টুল। Build.VERSION_CODES-এ প্রতিটি API Level-এর জন্য নামযুক্ত ধ্রুবক রয়েছে: VERSION_CODES.TIRAMISU (33), VERSION_CODES.UPSIDE_DOWN_CAKE (34), VERSION_CODES.VANILLA_ICE_CREAM (35)। if (SDK_INT >= VERSION_CODES.TIRAMISU) এর মাধ্যমে তুলনা হল আদর্শ প্যাটার্ন।

kotlin
// Android কোডে API Level পরীক্ষার উদাহরণ
import android.os.Build
import android.os.Build.VERSION
import android.os.Build.VERSION_CODES
import android.graphics.drawable.AdaptiveIconDrawable

class ApiLevelHelper {

    // 1. মৌলিক API Level পরীক্ষা
    fun isAtLeastTiramisu(): Boolean {
        return VERSION.SDK_INT >= VERSION_CODES.TIRAMISU  // 33
    }

    // 2. পরীক্ষা সহ অভিযোজিত API কল
    fun getAdaptiveIcon(drawable: android.graphics.drawable.Drawable):
            android.graphics.drawable.Drawable? {
        // AdaptiveIconDrawable শুধুমাত্র API 26 (Android 8) এর সাথে উপলব্ধ
        if (VERSION.SDK_INT >= VERSION_CODES.O) {
            return AdaptiveIconDrawable(drawable, null)
        }
        return drawable  // পুরানো ডিভাইসের জন্য fallback
    }

    // 3. POST_NOTIFICATIONS অনুমতি পরীক্ষা (শুধুমাত্র API 33+)
    fun canRequestNotificationPermission(): Boolean {
        return VERSION.SDK_INT >= VERSION_CODES.TIRAMISU
    }

    // 4. API Level অনুসারে ইমেজ প্রদাতা নির্বাচন
    fun getImagePickerProvider(): String {
        return when {
            VERSION.SDK_INT >= VERSION_CODES.UPSIDE_DOWN_CAKE -> {
                // API 34+ PhotoPicker ব্যবহার করে
                "photo_picker"
            }
            VERSION.SDK_INT >= VERSION_CODES.KITKAT -> {
                // API 19+ Intent ACTION_OPEN_DOCUMENT ব্যবহার করে
                "open_document"
            }
            else -> {
                // Legacy: ACTION_GET_CONTENT (সকল সংস্করণ)
                "get_content"
            }
        }
    }

    // 5. @TargetApi এর মাধ্যমে Java-শৈলী পরীক্ষা (পশ্চাৎগামী সামঞ্জস্যের জন্য)
    @Suppress("DEPRECATION")
    fun checkLegacyStorage(): Boolean {
        // Scoped Storage আচরণ targetSdk-এর উপর নির্ভর করে, SDK_INT-এর উপর নয়
        return VERSION.SDK_INT < VERSION_CODES.Q  // Android 10
    }

    // 6. বিশ্লেষণের জন্য বিল্ড তথ্য
    fun getDeviceApiInfo(): Map<String, Any> {
        return mapOf(
            "sdk_int" to VERSION.SDK_INT,
            "release" to VERSION.RELEASE,
            "codename" to VERSION.CODENAME,
            "incremental" to VERSION.INCREMENTAL,
            "preview_sdk" to VERSION.PREVIEW_SDK_INT
        )
    }
}

// পরীক্ষা
fun main() {
    val helper = ApiLevelHelper()
    println("API Level: ${VERSION.SDK_INT}")
    println("Is Tiramisu+: ${helper.isAtLeastTiramisu()}")
}

ApiLevelHelper ক্লাস API Level পরীক্ষার সমস্ত প্রধান প্যাটার্ন প্রদর্শন করে: SDK_INT >= VERSION_CODES সহ isAtLeastTiramisu, পুরানো সংস্করণের জন্য fallback সহ getAdaptiveIcon, when মাল্টি-ব্রাঞ্চিং সহ getImagePickerProvider, বিশ্লেষণের জন্য getDeviceApiInfo। মূল নিয়ম হল SDK_INT পরীক্ষা ছাড়া নতুন API কল না করা, অন্যথায় অ্যাপটি পুরানো ডিভাইসগুলিতে NoSuchMethodError দিয়ে ক্র্যাশ হবে।

ANT (Android New API) এবং lint

Android Studio-তে স্ট্যাটিক বিশ্লেষক lint অন্তর্ভুক্ত রয়েছে, যা minSdkVersion-এর উপরে API ব্যবহার সম্পর্কে সতর্ক করে। যদি SDK_INT পরীক্ষা ছাড়া একটি মেথড কল করা হয়, lint এটিকে ত্রুটি হিসাবে হাইলাইট করে: "Call requires API level 34 (current min is 26)"। সমাধান: মেথডে @RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE) যোগ করা বা SDK_INT-এর if-পরীক্ষা। @TargetApi একটি অবহিত অ্যানোটেশন, @RequiresApi সুপারিশ করা হয়।

API Level এবং Android সংস্করণের সঙ্গতি সারণি

API Level সারণি ডেভেলপারের জন্য একটি রেফারেন্স টুল। ডিভাইসের API Level জেনে, আপনি Android সংস্করণ এবং উপলব্ধ বৈশিষ্ট্যগুলি নির্ধারণ করতে পারেন। সারণিটি API Level 1 (2008) থেকে API Level 36 (2025) পর্যন্ত সমস্ত প্রধান Android রিলিজ তালিকাভুক্ত করে। কোড নামগুলি (Cupcake, Donut, Tiramisu, VanillaIceCream) Google-এর ভিতরে এবং VERSION_CODES-এ ব্যবহার করা হয়।

API LevelAndroid সংস্করণকোড নামবছর
11.02008
31.5Cupcake2009
82.2Froyo2010
144.0Ice Cream Sandwich2011
194.4KitKat2013
215.0Lollipop2014
236.0Marshmallow2015
268.0Oreo2017
289Pie2018
2910Quince Tart (10)2019
3011Red Velvet Cake2020
3112Snow Cone2021
3313Tiramisu2022
3414Upside Down Cake2023
3515Vanilla Ice Cream2024
3616Baklava2025

সারণি: আচরণগত পরিবর্তনের জন্য সীমা API Level

নিম্নলিখিত সারণিটি মূল API Level দেখায় যা targetSdk বাড়ানোর সময় পশ্চাৎগামী সামঞ্জস্য ভঙ্গকারী আচরণগত পরিবর্তন প্রবর্তন করে:

API Levelআচরণগত পরিবর্তনঅ্যাপের উপর প্রভাব
29Scoped StoragePictures/Downloads/Music-এ সরাসরি ফাইল অ্যাক্সেস নেই
30Package VisibilityqueryIntentActivities() শুধুমাত্র ইন্টারঅ্যাক্ট করা প্যাকেজ দেখে
31Foreground Service Notification10 সেকেন্ডের মধ্যে বাধ্যতামূলক বিজ্ঞপ্তি
33POST_NOTIFICATIONSবিজ্ঞপ্তির জন্য রানটাইম অনুমতি
34Foreground Service Typesম্যানিফেস্টে ফোরগ্রাউন্ড সার্ভিসের ধরন ঘোষণা
35Privacy Sandboxবিজ্ঞাপন শনাক্তকারী সীমাবদ্ধতা

সচরাচর জিজ্ঞাসিত প্রশ্ন

Android-এ API Level কী?

API Level Android Android API সংস্করণের পূর্ণসংখ্যা শনাক্তকারী। প্রতিটি রিলিজের একটি অনন্য নম্বর রয়েছে: Android 13 = API 33, Android 14 = API 34, Android 15 = API 35, Android 16 = API 36। ডেভেলপার সামঞ্জস্য পরিচালনা করতে build.gradle-এ minSdkVersion, targetSdkVersion এবং compileSdkVersion নির্দিষ্ট করে। API Level উপলব্ধ ক্লাস, মেথড এবং আচরণগত পরিবর্তন নির্ধারণ করে।

minSdk targetSdk এবং compileSdk থেকে কীভাবে আলাদা?

minSdkVersion — অ্যাপ ইনস্টল করার জন্য ন্যূনতম Android সংস্করণ। targetSdkVersion — যে সংস্করণের বিরুদ্ধে অ্যাপ পরীক্ষা করা হয়েছে, আচরণগত পরিবর্তন অন্তর্ভুক্ত। compileSdkVersion — কোড কম্পাইল করার জন্য SDK সংস্করণ। minSdk সর্বনিম্ন, targetSdk পছন্দসই সর্বশেষ, compileSdk কমপক্ষে targetSdk হতে হবে। তিনটিই build.gradle-এ নির্দিষ্ট করা হয়।

আমি যদি ডিভাইসের Android সংস্করণের চেয়ে targetSdk কম সেট করি তাহলে কী হবে?

যদি targetSdkVersion ডিভাইসের API Level-এর চেয়ে কম হয়, Android targetSdk-এর পরে প্রবর্তিত আচরণগত পরিবর্তনগুলি নিষ্ক্রিয় করে। উদাহরণস্বরূপ, Android 14 (API 34)-এ targetSdk = 28-এর সাথে, Scoped Storage, POST_NOTIFICATIONS, Foreground Service Types প্রয়োগ করা হয় না। Google Play ব্যবহারকারীদের নিরাপত্তার জন্য targetSdkVersion বর্তমান API Level থেকে 1 বছরের বেশি পুরানো হতে পারে না।

ডিভাইসের API Level কীভাবে জানবেন?

ডিভাইসের API Level ধ্রুবক Build.VERSION.SDK_INT (উদাহরণ: Android 14-এর জন্য 34) এর মাধ্যমে উপলব্ধ। তুলনার জন্য, Build.VERSION_CODES থেকে নামযুক্ত ধ্রুবক ব্যবহার করুন: if (SDK_INT >= VERSION_CODES.TIRAMISU)। Build.VERSION.RELEASE সংস্করণ স্ট্রিং ("14") প্রদান করে। SDK_INT মান ক্লাস লোড হওয়ার সময় ক্যাশে করা হয় এবং যেকোনো থ্রেড থেকে অ্যাক্সেসযোগ্য।

কেন Google Play প্রতি বছর নতুন targetSdk চায়?

Google Play নিরাপত্তা আচরণগত পরিবর্তন বাস্তবায়নের জন্য বার্ষিক targetSdkVersion প্রয়োজনীয়তা বাড়ায়। প্রতিটি নতুন API Level Scoped Storage, POST_NOTIFICATIONS, Privacy Sandbox এবং অন্যান্য সুরক্ষা প্রবর্তন করে। কম targetSdk-যুক্ত অ্যাপগুলি এই সুরক্ষাগুলি বাইপাস করে এবং ব্যবহারকারীদের জন্য ঝুঁকি তৈরি করে। প্রয়োজনীয়তা নিশ্চিত করে যে স্টোরের সমস্ত অ্যাপ বর্তমান নিয়মের অধীনে পরীক্ষা করা হয়েছে।

সারসংক্ষেপ

  • API Level — Android API সংস্করণের (1-36) পূর্ণসংখ্যা শনাক্তকারী, অ্যাপ সামঞ্জস্য পরিচালনা করতে ব্যবহৃত হয়
  • minSdkVersion ইনস্টলেশনের জন্য ন্যূনতম API Level নির্ধারণ করে, targetSdkVersion — আচরণগত পরিবর্তন সহ সংস্করণ, compileSdkVersion — কম্পাইলেশনের জন্য সংস্করণ
  • আচরণগত পরিবর্তন (Scoped Storage, POST_NOTIFICATIONS, Foreground Service Types) শুধুমাত্র প্রয়োগ হয় যদি targetSdk >= সংশ্লিষ্ট API Level
  • Google Play-এর targetSdk 1 বছরের বেশি পুরানো হতে পারে না, অন্যথায় অ্যাপ প্রকাশনা ব্লক করে
  • Build.VERSION.SDK_INT — fallback সহ নতুন API নিরাপদে কল করার জন্য ডিভাইস API Level-এর রানটাইম পরীক্ষা
  • lint Android Studio-তে minSdk-এর উপরে API ব্যবহার সম্পর্কে সতর্ক করে এবং মেথডগুলির জন্য @RequiresApi সুপারিশ করে
  • API 34+ এ আচরণগত পরিবর্তন-এর মধ্যে বাধ্যতামূলক ফোরগ্রাউন্ড সার্ভিসের ধরন অন্তর্ভুক্ত, API 35+ — বিজ্ঞাপন শনাক্তকারী সীমাবদ্ধতা সহ Privacy Sandbox

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন