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 একটি পূর্ণসংখ্যা শনাক্তকারী যা 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-এর উপর ভিত্তি করে আচরণগত পরিবর্তন প্রয়োগ করে।
অ্যাপ ইনস্টল করার সময়, 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 ব্যবহার সম্পর্কে সতর্ক করে |
build.gradle ফাইলে (Module: app), ডেভেলপার তিনটি API Level প্যারামিটার নির্দিষ্ট করে: minSdkVersion, targetSdkVersion এবং compileSdkVersion। এগুলিকে বিভ্রান্ত করা শিক্ষানবিস Android ডেভেলপারদের সবচেয়ে সাধারণ ভুলগুলির মধ্যে একটি। প্রতিটি প্যারামিটার সামঞ্জস্যের একটি ভিন্ন দিকের জন্য দায়ী এবং তাদের মান সামঞ্জস্যপূর্ণ হতে হবে।
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 হল সেই API Level যার বিরুদ্ধে অ্যাপটি পরীক্ষা করা হয়েছে। Android আচরণগত পরিবর্তন প্রয়োগ করতে targetSdk ব্যবহার করে: যদি অ্যাপ targetSdk 33 নির্দিষ্ট করে, সিস্টেম API 33-এ প্রবর্তিত সমস্ত আচরণগত পরিবর্তন সক্ষম করে। যদি targetSdk 31 হয়, সিস্টেম API 32-33 পরিবর্তনগুলি প্রয়োগ করে না, পুরানো আচরণের সাথে সামঞ্জস্য বজায় রাখে। এটি নিরাপত্তার জন্য সবচেয়ে গুরুত্বপূর্ণ প্যারামিটার: Google Play-এর targetSdk বর্তমান API Level থেকে 1 বছরের বেশি পুরানো হওয়া যাবে না।
compileSdkVersion হল Android SDK-এর সংস্করণ যার বিরুদ্ধে কোড কম্পাইল করা হয়। এটি নির্ধারণ করে কম্পাইলেশনের সময় কোন API উপলব্ধ। compileSdk targetSdk থেকে >= হতে হবে এবং আদর্শভাবে সর্বশেষ স্থিতিশীল API Level-এর সমান হওয়া উচিত। compileSdk বাড়ানো রানটাইম আচরণকে প্রভাবিত করে না — শুধুমাত্র কম্পাইলারের জন্য নতুন API-এর উপলব্ধতা। compileSdk বাড়ানোর পরে, আপনাকে অবহিত API এবং নতুন অনুমতি প্রয়োজনীয়তার জন্য কোড পরীক্ষা করতে হবে।
// 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 ফ্র্যাগমেন্ট এবং থিমের জন্য পশ্চাৎগামী সামঞ্জস্য প্রদান করে।
minSdk এবং targetSdk প্যারামিটারগুলি AndroidManifest.xml-এও নির্দিষ্ট করা যেতে পারে, কিন্তু আধুনিক প্রকল্পগুলি build.gradle ব্যবহার করে — Gradle-এর মান ম্যানিফেস্টকে ওভাররাইড করে। ম্যানিফেস্টে, লাইব্রেরি এবং মডিউলগুলির জন্য
আচরণগত পরিবর্তন হল 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: ম্যানিফেস্টে ফোরগ্রাউন্ড সার্ভিসের ধরনের বাধ্যতামূলক ঘোষণা।
// 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 সবচেয়ে গুরুত্বপূর্ণ আচরণগত পরিবর্তনগুলির মধ্যে একটি। API 29 (targetSdk 29+) থেকে শুরু করে, অ্যাপটি Pictures, Downloads, Music এবং Documents ডিরেক্টরিতে সরাসরি ফাইল অ্যাক্সেস পেতে পারে না। পরিবর্তে, মিডিয়ার জন্য MediaStore, নির্বিচার ফাইলের জন্য SAF (Storage Access Framework) এবং নিজস্ব স্টোরেজের জন্য getExternalFilesDir() ব্যবহার করা হয়। ব্যতিক্রম হল MANAGE_EXTERNAL_STORAGE অনুমতি-যুক্ত অ্যাপ, যার জন্য Google Play-এর অনুমোদন প্রয়োজন।
Google Play অ্যাপ প্রকাশের জন্য targetSdkVersion-এর বাধ্যতামূলক প্রয়োজনীয়তা নির্ধারণ করে। আগস্ট 2024 থেকে, Google Play-এর targetSdkVersion >= API 33 (Android 13) প্রয়োজন। প্রতি বছর সীমা বাড়ে: নতুন অ্যাপ এবং আপডেটগুলিকে বর্তমান প্রধান API Level থেকে 1 বছরের বেশি পুরানো targetSdk নির্দিষ্ট করতে হবে না। প্রয়োজনীয়তা লঙ্ঘন করলে প্রকাশনা ব্লক করা হয় এবং স্টোর থেকে অ্যাপ সরিয়ে ফেলা হয়।
প্রধান কারণ হল নিরাপত্তা। প্রতিটি নতুন 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 থেকে বাধ্যতামূলক)।
| তারিখ | ন্যূনতম targetSdk | Android সংস্করণ |
|---|---|---|
| আগস্ট 2022 | 31 | Android 12 |
| আগস্ট 2023 | 33 | Android 13 |
| আগস্ট 2024 | 33 | Android 13 |
| আগস্ট 2025 | 34 | Android 14 |
| আগস্ট 2026 (পরিকল্পিত) | 35 | Android 15 |
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) এর মাধ্যমে তুলনা হল আদর্শ প্যাটার্ন।
// 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 দিয়ে ক্র্যাশ হবে।
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 সারণি ডেভেলপারের জন্য একটি রেফারেন্স টুল। ডিভাইসের API Level জেনে, আপনি Android সংস্করণ এবং উপলব্ধ বৈশিষ্ট্যগুলি নির্ধারণ করতে পারেন। সারণিটি API Level 1 (2008) থেকে API Level 36 (2025) পর্যন্ত সমস্ত প্রধান Android রিলিজ তালিকাভুক্ত করে। কোড নামগুলি (Cupcake, Donut, Tiramisu, VanillaIceCream) Google-এর ভিতরে এবং VERSION_CODES-এ ব্যবহার করা হয়।
| API Level | Android সংস্করণ | কোড নাম | বছর |
|---|---|---|---|
| 1 | 1.0 | — | 2008 |
| 3 | 1.5 | Cupcake | 2009 |
| 8 | 2.2 | Froyo | 2010 |
| 14 | 4.0 | Ice Cream Sandwich | 2011 |
| 19 | 4.4 | KitKat | 2013 |
| 21 | 5.0 | Lollipop | 2014 |
| 23 | 6.0 | Marshmallow | 2015 |
| 26 | 8.0 | Oreo | 2017 |
| 28 | 9 | Pie | 2018 |
| 29 | 10 | Quince Tart (10) | 2019 |
| 30 | 11 | Red Velvet Cake | 2020 |
| 31 | 12 | Snow Cone | 2021 |
| 33 | 13 | Tiramisu | 2022 |
| 34 | 14 | Upside Down Cake | 2023 |
| 35 | 15 | Vanilla Ice Cream | 2024 |
| 36 | 16 | Baklava | 2025 |
নিম্নলিখিত সারণিটি মূল API Level দেখায় যা targetSdk বাড়ানোর সময় পশ্চাৎগামী সামঞ্জস্য ভঙ্গকারী আচরণগত পরিবর্তন প্রবর্তন করে:
| API Level | আচরণগত পরিবর্তন | অ্যাপের উপর প্রভাব |
|---|---|---|
| 29 | Scoped Storage | Pictures/Downloads/Music-এ সরাসরি ফাইল অ্যাক্সেস নেই |
| 30 | Package Visibility | queryIntentActivities() শুধুমাত্র ইন্টারঅ্যাক্ট করা প্যাকেজ দেখে |
| 31 | Foreground Service Notification | 10 সেকেন্ডের মধ্যে বাধ্যতামূলক বিজ্ঞপ্তি |
| 33 | POST_NOTIFICATIONS | বিজ্ঞপ্তির জন্য রানটাইম অনুমতি |
| 34 | Foreground Service Types | ম্যানিফেস্টে ফোরগ্রাউন্ড সার্ভিসের ধরন ঘোষণা |
| 35 | Privacy Sandbox | বিজ্ঞাপন শনাক্তকারী সীমাবদ্ধতা |
সচরাচর জিজ্ঞাসিত প্রশ্ন
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 উপলব্ধ ক্লাস, মেথড এবং আচরণগত পরিবর্তন নির্ধারণ করে।
minSdkVersion — অ্যাপ ইনস্টল করার জন্য ন্যূনতম Android সংস্করণ। targetSdkVersion — যে সংস্করণের বিরুদ্ধে অ্যাপ পরীক্ষা করা হয়েছে, আচরণগত পরিবর্তন অন্তর্ভুক্ত। compileSdkVersion — কোড কম্পাইল করার জন্য SDK সংস্করণ। minSdk সর্বনিম্ন, targetSdk পছন্দসই সর্বশেষ, compileSdk কমপক্ষে targetSdk হতে হবে। তিনটিই build.gradle-এ নির্দিষ্ট করা হয়।
যদি 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 ধ্রুবক Build.VERSION.SDK_INT (উদাহরণ: Android 14-এর জন্য 34) এর মাধ্যমে উপলব্ধ। তুলনার জন্য, Build.VERSION_CODES থেকে নামযুক্ত ধ্রুবক ব্যবহার করুন: if (SDK_INT >= VERSION_CODES.TIRAMISU)। Build.VERSION.RELEASE সংস্করণ স্ট্রিং ("14") প্রদান করে। SDK_INT মান ক্লাস লোড হওয়ার সময় ক্যাশে করা হয় এবং যেকোনো থ্রেড থেকে অ্যাক্সেসযোগ্য।
Google Play নিরাপত্তা আচরণগত পরিবর্তন বাস্তবায়নের জন্য বার্ষিক targetSdkVersion প্রয়োজনীয়তা বাড়ায়। প্রতিটি নতুন API Level Scoped Storage, POST_NOTIFICATIONS, Privacy Sandbox এবং অন্যান্য সুরক্ষা প্রবর্তন করে। কম targetSdk-যুক্ত অ্যাপগুলি এই সুরক্ষাগুলি বাইপাস করে এবং ব্যবহারকারীদের জন্য ঝুঁকি তৈরি করে। প্রয়োজনীয়তা নিশ্চিত করে যে স্টোরের সমস্ত অ্যাপ বর্তমান নিয়মের অধীনে পরীক্ষা করা হয়েছে।
সারসংক্ষেপ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।