SDK टूल के एक्सटेंशन

SDK टूल के एक्सटेंशन, मॉड्युलर सिस्टम का इस्तेमाल करते हैं कॉम्पोनेंट जोड़ें, ताकि एपीआई जोड़े जा सकें सार्वजनिक SDK टूल में, पहले रिलीज़ हो चुके कुछ एपीआई लेवल के लिए भी ऐसा ही किया जा सकता है. ये एपीआई हैं डिवाइसों पर तब डिलीवर किया जाता है, जब असली उपयोगकर्ताओं को Google Play से मॉड्यूल अपडेट मिलते हैं सिस्टम अपडेट. ऐप्स डेवलपर अपने ऐप्लिकेशन में इन एपीआई का इस्तेमाल, ज़्यादा जानकारी देने के लिए कर सकते हैं जो पहले इन टूल के लिए, SDK टूल में उपलब्ध नहीं थी Android के वर्शन हैं.

एपीआई वर्शन

Android 11 (एपीआई लेवल 30) और Android 11 वर्शन के साथ-साथ, Android डिवाइसों में SDK टूल का एक सेट शामिल होता है एक्सटेंशन. नए एपीआई जोड़े जाने पर, उन्हें एपीआई लेवल में शामिल किया जाता है. हालांकि, किसी खास वर्शन के SDK टूल एक्सटेंशन में भी शामिल की जा सकती है. उदाहरण के लिए, ACTION_PICK_IMAGES फ़ोटो पिकर के लिए एपीआई को Android 13 (एपीआई लेवल 33) के सार्वजनिक SDK टूल में जोड़ा गया था, हालांकि, यह R एक्सटेंशन वर्शन 2 से शुरू होने वाले SDK एक्सटेंशन के ज़रिए भी उपलब्ध है. SDK टूल एक्सटेंशन के नाम, पूर्णांक के दोनों में से किसी एक कॉन्सटेंट से मेल खाते हैं CANNOT TRANSLATE Build.VERSION_CODES या एक SdkExtensions क्लास में परिभाषित किया गया है (जैसे SdkExtensions.AD_SERVICES).

तय करें कि कौनसे SDK एक्सटेंशन इस्तेमाल करने हैं

SDK एक्सटेंशन एपीआई इस्तेमाल करने से पहले, आपको यह तय करना होगा कि कौनसे SDK टूल ऐसे एपीआई शामिल करें जो आपके ऐप्लिकेशन के इस्तेमाल के उदाहरणों की मदद करते हैं.

SDK एक्सटेंशन एपीआई के लिए एपीआई रेफ़रंस पेजों पर, सबसे पुराने SDK टूल का इस्तेमाल किया जाता है एक्सटेंशन का एक वर्शन होता है जिसका इस्तेमाल आपका ऐप्लिकेशन, एपीआई को ऐक्सेस करने के लिए कर सकता है. अगर दस्तावेज़ एक Android प्लैटफ़ॉर्म का वर्शन भी बताता है (एपीआई लेवल के हिसाब से), तो एपीआई, Android के किसी भी वर्शन या इसके बाद के वर्शन वाले सभी डिवाइसों के लिए भी उपलब्ध है.

उदाहरण के लिए, ACTION_PICK_IMAGES सामान्य रूप से सार्वजनिक SDK में उपलब्ध होता है Android 13 (एपीआई लेवल 33) से शुरुआत कर रहे हैं. हालांकि, यह अब तक के डिवाइसों पर भी उपलब्ध है Android 11 (एपीआई लेवल 30) के वर्शन पर स्विच करता है, बशर्ते डिवाइस में कम से कम R वर्शन मौजूद हो एक्सटेंशन वर्शन 2:

SDK टूल के एक्सटेंशन में शामिल एपीआई, एपीआई में अपने एक्सटेंशन का वर्शन दिखाते हैं
रेफ़रंस
दस्तावेज़

इस एपीआई का इस्तेमाल करने के लिए, आपको कम से कम एपीआई लेवल वाले एसडीके से कंपाइल करना होगा 33 या एक्सटेंशन लेवल कम से कम 2.

एक्सटेंशन SDK टूल का इस्तेमाल करने के लिए, यह तरीका अपनाएं:

  1. सुविधा की जांच करके अपनी ज़रूरत के मुताबिक एक्सटेंशन का कम से कम वर्शन खोजें दस्तावेज़ और एपीआई का रेफ़रंस, जो आपको इस्तेमाल करने हैं.
  2. अपने सुविधा सेट के लिए ज़रूरी एक्सटेंशन वर्शन तय करने के बाद, Android Studio में SDK Manager खोलें.
  3. Android SDK प्लैटफ़ॉर्म और उससे जुड़े एक्सटेंशन की एंट्री चुनें वर्शन (या बाद वाला वर्शन, क्योंकि एपीआई एक अलग तरह का काम करते हैं). जैसे: Android SDK प्लैटफ़ॉर्म 33, एक्सटेंशन लेवल 4.
  4. इन वैल्यू का एलान अपने ऐप्लिकेशन के build.gradle.kts या build.gradle में करें फ़ाइल:

    ग्रूवी

    android {
        compileSdk 33
        compileSdkExtension 4
        ...
    }
    

    Kotlin

    android {
        compileSdk = 33
        compileSdkExtension = 4
        ...
    }
    

यह पता करना कि SDK टूल के एक्सटेंशन उपलब्ध हैं या नहीं

आपका ऐप्लिकेशन यह देख सकता है कि रनटाइम के दौरान, SDK एक्सटेंशन के कौनसे वर्शन उपलब्ध हैं, और डेवलप करते समय Android डीबग का इस्तेमाल करके एक्सटेंशन वर्शन देखे जा सकते हैं ब्रिज (adb) कमांड की जानकारी दें, जैसा कि नीचे दिए गए सेक्शन में बताया गया है.

रनटाइम के दौरान जांचें

आपका ऐप्लिकेशन, रनटाइम के दौरान यह जांच कर सकता है कि दिए गए एक्सटेंशन के लिए SDK टूल उपलब्ध हैं या नहीं प्लैटफ़ॉर्म वर्शन है, जो getExtensionVersion() तरीका. उदाहरण के लिए, नीचे दिया गया कोड जांच करेगा कि एक्सटेंशन का वर्शन 2 Android 11 (एपीआई लेवल 30) के SDK टूल एक्सटेंशन के लिए, Google या उसके बाद के वर्शन उपलब्ध हैं:

Kotlin

fun isPhotoPickerAvailable(): Boolean {
    return SdkExtensions.getExtensionVersion(Build.VERSION_CODES.R) >= 2
    // Safely use extension APIs that are available with Android 11 (API level 30) Extensions Version 2, such as Photo Picker.
}

Java

public static final boolean isPhotoPickerAvailable() {
    return SdkExtensions.getExtensionVersion(Build.VERSION_CODES.R) >= 2;
}

यह इन चीज़ों के आधार पर जांच करने जैसा है Build.VERSION.SDK_INT:

Kotlin

fun isPhotoPickerAvailable(): Boolean {
    return Build.VERSION.SDK_INT >= 33
}

Java

public static final boolean isPhotoPickerAvailable() {
    return Build.VERSION.SDK_INT >= 33;
}

यह SDK_INT जांच अब भी सुरक्षित और मान्य है, लेकिन isPhotoPickerAvailable को एक्सटेंशन एपीआई उपलब्ध होने पर भी, कुछ डिवाइसों पर 'गलत' वैल्यू मिलती है. बतौर नतीजा, SDK_INT जांच सही नहीं है और एक्सटेंशन वर्शन की जांच इससे एपीआई की उपलब्धता के बारे में पता किया जा सकता है. SDK_INT से ज़्यादा डिवाइसों वाले सभी डिवाइस 33 (Android 13 या उसके बाद के वर्शन) से ज़्यादा या इसके बराबर के वर्शन में, फ़ोटो पिकर के एपीआई सार्वजनिक SDK टूल, लेकिन ऐसे डिवाइस हैं जिनमें SDK_INT का साइज़ 33 से कम है (जैसे कि Android 11, 12, और 12L) के लिए खास तौर पर बनाए गए हैं, जो R एक्सटेंशन होने पर एपीआई को भी ऐक्सेस कर सकते हैं कम से कम 2 के वर्शन हो.

इस स्थिति में, एक्सटेंशन वर्शन की जांच करने की सुविधा का इस्तेमाल करने से, आपके ऐप्लिकेशन को की अतिरिक्त सुविधा उपलब्ध कराई है. एसडीके एक्सटेंशन के नाम और कॉन्सटेंट का इस्तेमाल उन सभी कॉन्सटेंट की सूची के लिए किया जा सकता है जिनका इस्तेमाल किया जा सकता है डिवाइस पर कुछ SDK एक्सटेंशन की जांच करें.

विज्ञापन सेवाओं के एक्सटेंशन

SDK टूल के एक्सटेंशन के सामान्य सेट की तरह ही, AdServices API का रेफ़रंस कभी-कभी यह बताता है कि एपीआई किसी "विज्ञापन सेवा एक्सटेंशन" का हिस्सा है वर्शन है. सामान्य SDK एक्सटेंशन के उलट, विज्ञापन सेवा एक्सटेंशन डिवाइस पर कौनसा वर्शन है, यह तय करने के लिए SdkExtensions.AD_SERVICES कॉन्सटेंट:

Kotlin

fun isAdServicesAvailable(): Boolean {
    return SdkExtensions.getExtensionVersion(SdkExtensions.AD_SERVICES) >= 4
}

Java

public static final boolean isAdServicesAvailable() {
    return SdkExtensions.getExtensionVersion(SdkExtensions.AD_SERVICES) >= 4;
}

विज्ञापन सेवा एक्सटेंशन की सुविधाओं और शुरू हो गया है, तो विज्ञापन सेवा एक्सटेंशन देखें दस्तावेज़ में दिया गया है.

यूटिलिटी मेथड्स

कुछ मामलों में, SDK टूल एक्सटेंशन में Jetpack उपयोगिता के तरीके होते हैं. इनकी मदद से, एक्सटेंशन एपीआई की उपलब्धता के बारे में जानकारी. उदाहरण के लिए, किसी Jetpack का इस्तेमाल किया जा सकता है फ़ोटो पिकर की जांच करने के लिए लाइब्रेरी फ़ंक्शन उपलब्धता, इस सुविधा की मदद से, कंडिशनल वर्शन की जांचों को ऐब्स्ट्रैक्ट किया जा सकता है.

टूल से जुड़ी सहायता

Android Studio में फ़्लमिंगो | 2.1 या इसके बाद के साल में, लिंट टूल नई एपीआई जांच के तहत, SDK एक्सटेंशन के वर्शन से जुड़ी समस्याओं को हल किया गया है. इसके अलावा, Android Studio, उन एपीआई के लिए सही वर्शन की जांच अपने-आप जनरेट कर सकता है जिन्हें SDK एक्सटेंशन का इस्तेमाल करके लॉन्च किया गया.

लिंट टूल उन इंस्टेंस को फ़्लैग करता है जिनमें SDK टूल के ज़रूरी एक्सटेंशन एपीआई को कॉल करने के लिए, ज़रूरी वर्शन पूरा नहीं हुआ.

SDK टूल एक्सटेंशन के नाम और कॉन्सटेंट

इस टेबल में बताया गया है कि SDK टूल के अलग-अलग सेट एपीआई रेफ़रंस दस्तावेज़ में उन कॉन्सटेंट को मैप किया गया है जिनका इस्तेमाल आपका ऐप्लिकेशन कर सकता है रनटाइम के दौरान एपीआई की उपलब्धता देखें. इनके लिए, SDK टूल एक्सटेंशन का सामान्य सेट हर सार्वजनिक SDK टूल की वैल्यू Build.VERSION_CODES.

SDK एक्सटेंशन का नाम लगातार मंज़ूरी दिए गए डिवाइस
R एक्सटेंशन VERSION_CODES.R Android 11 (एपीआई लेवल 30) और इसके बाद के वर्शन
S एक्सटेंशन VERSION_CODES.S Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन
T एक्सटेंशन VERSION_CODES.TIRAMISU Android 13 (एपीआई लेवल 33) और इसके बाद के वर्शन
विज्ञापन सेवाओं के एक्सटेंशन SdkExtensions.AD_SERVICES Android 13 (एपीआई लेवल 33) और इसके बाद के वर्शन

adb का इस्तेमाल करके जांच करें

adb का इस्तेमाल करने वाले डिवाइस पर कौनसे SDK एक्सटेंशन उपलब्ध हैं, यह देखने के लिए निम्न आदेश:

adb shell getprop | grep build.version.extensions

कमांड चलाने के बाद, आपको इससे मिलता-जुलता आउटपुट दिखेगा:

[build.version.extensions.r]: [3] # Android 11 (API level 30) and higher
[build.version.extensions.s]: [3] # Android 12 (API level 31) and higher
[build.version.extensions.t]: [3] # Android 13 (API level 33) and higher

हर लाइन में एक SDK एक्सटेंशन दिखता है. यह एक्सटेंशन, डिवाइस पर मौजूद संबंधित एक्सटेंशन वर्शन (इस मामले में 3) पर क्लिक करें.