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 میں متعین کیے گئے ہیں۔

اگر میں targetSdk کو ڈیوائس کے Android ورژن سے کم سیٹ کروں تو کیا ہوگا؟

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

پروجیکٹ پر بحث کریں

مزید پڑھیں