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 एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें