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 ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔