<uses-sdk>

Google Play, आपके ऐप्लिकेशन के मेनिफ़ेस्ट में बताए गए <uses-sdk> एट्रिब्यूट का इस्तेमाल करके, आपके ऐप्लिकेशन को उन डिवाइसों से फ़िल्टर करता है जिन पर प्लैटफ़ॉर्म का ज़रूरी वर्शन नहीं है. इन एट्रिब्यूट को सेट करने से पहले, पक्का करें कि आपको Google Play के फ़िल्टर के बारे में पता हो.

सिंटैक्स:
<uses-sdk android:minSdkVersion="integer"
          android:targetSdkVersion="integer"
          android:maxSdkVersion="integer" />
इसमें शामिल है:
<manifest>
विवरण:

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

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

यह नहीं बताया जा सकता कि कोई ऐप्लिकेशन, एसडीके के माइनर वर्शन को टारगेट करता है या उसके लिए ज़रूरी है.

अपने ऐप्लिकेशन का वर्शन तय करने के बारे में भी पढ़ें.

एट्रिब्यूट:
android:minSdkVersion
यह एक पूर्णांक है. इससे पता चलता है कि ऐप्लिकेशन को चलाने के लिए, कम से कम कितना एपीआई लेवल ज़रूरी है. अगर सिस्टम का एपीआई लेवल, इस एट्रिब्यूट में दी गई वैल्यू से कम है, तो Android सिस्टम उपयोगकर्ता को ऐप्लिकेशन इंस्टॉल करने से रोकता है. इस एट्रिब्यूट की वैल्यू हमेशा दें.

चेतावनी: अगर आपने इस एट्रिब्यूट की वैल्यू नहीं दी है, तो सिस्टम डिफ़ॉल्ट रूप से "1" वैल्यू का इस्तेमाल करेगा. इसका मतलब है कि आपका ऐप्लिकेशन Android के सभी वर्शन के साथ काम करता है. अगर ऐसा नहीं है और आपने सही minSdkVersion का एलान नहीं किया है, तो एपीआई लेवल के साथ काम न करने वाले सिस्टम पर इंस्टॉल किए जाने पर, ऐप्लिकेशन रनटाइम के दौरान क्रैश हो जाता है. ऐसा तब होता है, जब ऐप्लिकेशन उन एपीआई को ऐक्सेस करने की कोशिश करता है जो उपलब्ध नहीं हैं. इसलिए, minSdkVersion एट्रिब्यूट में सही एपीआई लेवल का एलान करना न भूलें.

android:targetSdkVersion
यह एक पूर्णांक है. इससे उस एपीआई लेवल का पता चलता है जिसे ऐप्लिकेशन टारगेट करता है. अगर इसे सेट नहीं किया जाता है, तो डिफ़ॉल्ट वैल्यू वही होती है जो minSdkVersion के लिए दी गई है.

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

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

उदाहरण के लिए, इस वैल्यू को "11" या इससे ज़्यादा पर सेट करने से, Android 3.0 या इसके बाद के वर्शन पर चलने वाले आपके ऐप्लिकेशन पर, सिस्टम Holo डिफ़ॉल्ट थीम लागू कर सकता है. साथ ही, बड़ी स्क्रीन पर चलने वाले ऐप्लिकेशन के लिए, स्क्रीन कंपैटिबिलिटी मोड को बंद कर देता है. ऐसा इसलिए होता है, क्योंकि एपीआई लेवल 11 के लिए सपोर्ट में बड़ी स्क्रीन के लिए सपोर्ट भी शामिल होता है.

इस एट्रिब्यूट के लिए सेट की गई वैल्यू के आधार पर, सिस्टम कई तरह की सुविधाओं को चालू कर सकता है. इनमें से कई व्यवहारों के बारे में, Build.VERSION_CODES रेफ़रंस में प्लैटफ़ॉर्म के वर्शन के हिसाब से बताया गया है.

अपने ऐप्लिकेशन को Android के हर वर्शन के साथ बनाए रखने के लिए, इस एट्रिब्यूट की वैल्यू को बढ़ाकर नए एपीआई लेवल से मैच करें. इसके बाद, अपने ऐप्लिकेशन को प्लैटफ़ॉर्म के उस वर्शन पर अच्छी तरह से टेस्ट करें.

एपीआई लेवल 4 में जोड़ा गया

android:maxSdkVersion
यह एक पूर्णांक है. इससे उस ज़्यादा से ज़्यादा एपीआई लेवल का पता चलता है जिस पर ऐप्लिकेशन को चलाने के लिए डिज़ाइन किया गया है.

Android 1.5, 1.6, 2.0, और 2.0.1 में, सिस्टम किसी ऐप्लिकेशन को इंस्टॉल करते समय और सिस्टम अपडेट के बाद ऐप्लिकेशन की फिर से पुष्टि करते समय, इस एट्रिब्यूट की वैल्यू की जांच करता है. इन दोनों ही मामलों में, अगर ऐप्लिकेशन का maxSdkVersion एट्रिब्यूट, सिस्टम के इस्तेमाल किए गए एपीआई लेवल से कम है, तो सिस्टम ऐप्लिकेशन को इंस्टॉल नहीं होने देता. सिस्टम अपडेट के बाद फिर से पुष्टि करने के मामले में, यह आपके ऐप्लिकेशन को डिवाइस से हटा देता है.

सिस्टम अपडेट के बाद, यह एट्रिब्यूट आपके ऐप्लिकेशन पर किस तरह असर डाल सकता है, यह समझने के लिए यहां दिया गया उदाहरण देखें:

जिस ऐप्लिकेशन ने अपने मेनिफ़ेस्ट में maxSdkVersion="5" का एलान किया है उसे Google Play पर पब्लिश किया जाता है. किसी उपयोगकर्ता के डिवाइस पर Android 1.6 (एपीआई लेवल 4) चल रहा है. वह ऐप्लिकेशन डाउनलोड और इंस्टॉल करता है. कुछ हफ़्तों बाद, उपयोगकर्ता को Android 2.0 (एपीआई लेवल 5) का सिस्टम अपडेट मिलता है. अपडेट इंस्टॉल होने के बाद, सिस्टम ऐप्लिकेशन के maxSdkVersion की जांच करता है और उसकी पुष्टि करता है.

ऐप्लिकेशन सामान्य रूप से काम करता है. हालांकि, कुछ समय बाद डिवाइस को एक और सिस्टम अपडेट मिलता है. इस बार, यह Android 2.0.1 (एपीआई लेवल 6) पर अपडेट होता है. अपडेट के बाद, सिस्टम अब ऐप्लिकेशन की फिर से पुष्टि नहीं कर सकता, क्योंकि सिस्टम का एपीआई लेवल (6) अब ऐप्लिकेशन के साथ काम करने वाले ज़्यादा से ज़्यादा एपीआई लेवल (5) से ज़्यादा है. सिस्टम, ऐप्लिकेशन को उपयोगकर्ता को दिखने से रोकता है. इससे ऐप्लिकेशन को डिवाइस से हटा दिया जाता है.

चेतावनी: हम इस एट्रिब्यूट की वैल्यू सबमिट करने का सुझाव नहीं देते. सबसे पहले, इस एट्रिब्यूट को Android प्लैटफ़ॉर्म के नए वर्शन पर अपने ऐप्लिकेशन को डिप्लॉय करने से रोकने के लिए सेट करने की ज़रूरत नहीं है, क्योंकि ये वर्शन रिलीज़ हो चुके हैं. प्लेटफ़ॉर्म के नए वर्शन, पुराने वर्शन के साथ पूरी तरह काम करते हैं. आपका ऐप्लिकेशन नए वर्शन पर ठीक से काम करता है. हालांकि, इसके लिए यह ज़रूरी है कि वह सिर्फ़ स्टैंडर्ड एपीआई का इस्तेमाल करे और डेवलपमेंट के सबसे सही तरीकों का पालन करे. दूसरा, कुछ मामलों में एट्रिब्यूट की जानकारी देने से, सिस्टम अपडेट होने के बाद आपका ऐप्लिकेशन उपयोगकर्ताओं के डिवाइसों से हटाया जा सकता है. ऐसा तब होता है, जब सिस्टम को ज़्यादा एपीआई लेवल पर अपडेट किया जाता है. ज़्यादातर डिवाइसों पर, सिस्टम के अपडेट समय-समय पर अपने-आप मिलते रहते हैं. इसलिए, इस एट्रिब्यूट को सेट करने से पहले, यह देख लें कि इन अपडेट का आपके ऐप्लिकेशन पर क्या असर पड़ेगा.

एपीआई लेवल 4 में जोड़ा गया

Android के कुछ वर्शन (Android 2.0.1 के बाद के वर्शन) में, इंस्टॉलेशन या फिर से पुष्टि करने के दौरान maxSdkVersion एट्रिब्यूट की जांच नहीं की जाती या इसे लागू नहीं किया जाता. Google Play, फ़िल्टर के तौर पर इस एट्रिब्यूट का इस्तेमाल करता रहेगा. हालांकि, उपयोगकर्ताओं को डाउनलोड के लिए उपलब्ध ऐप्लिकेशन दिखाते समय ऐसा किया जाएगा.
पहली बार इसमें दिखाया गया:
एपीआई लेवल 1

एपीआई लेवल क्या है?

एपीआई लेवल एक पूर्णांक वैल्यू होती है. इससे Android प्लैटफ़ॉर्म के किसी वर्शन में उपलब्ध फ़्रेमवर्क एपीआई के वर्शन की खास पहचान होती है.

Android प्लैटफ़ॉर्म, एक फ़्रेमवर्क एपीआई उपलब्ध कराता है. ऐप्लिकेशन इसका इस्तेमाल, Android सिस्टम के साथ इंटरैक्ट करने के लिए कर सकते हैं. फ़्रेमवर्क एपीआई में ये शामिल हैं:

  • पैकेज और क्लास का मुख्य सेट
  • मेनिफ़ेस्ट फ़ाइल का एलान करने के लिए, एक्सएमएल एलिमेंट और एट्रिब्यूट का सेट
  • संसाधनों का एलान करने और उन्हें ऐक्सेस करने के लिए, एक्सएमएल एलिमेंट और एट्रिब्यूट का सेट
  • इंटेंट का सेट
  • अनुमतियों का एक ऐसा सेट जिसका अनुरोध ऐप्लिकेशन कर सकते हैं. साथ ही, सिस्टम में शामिल अनुमतियों को लागू करने की सुविधा

Android प्लैटफ़ॉर्म के हर नए वर्शन में, Android ऐप्लिकेशन फ़्रेमवर्क एपीआई के अपडेट शामिल हो सकते हैं.

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

बहुत कम मामलों में, एपीआई के कुछ हिस्सों में बदलाव किया जाता है या उन्हें हटाया जाता है. हालांकि, आम तौर पर ऐसे बदलाव सिर्फ़ एपीआई को बेहतर बनाने और ऐप्लिकेशन या सिस्टम की सुरक्षा के लिए ज़रूरी होते हैं. एपीआई के अन्य सभी हिस्सों को पिछले वर्शन से बिना किसी बदलाव के आगे बढ़ाया जाता है.

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

यहां दी गई टेबल में, Android प्लैटफ़ॉर्म के हर वर्शन के साथ काम करने वाले एपीआई लेवल के बारे में बताया गया है. हर वर्शन का इस्तेमाल करने वाले डिवाइसों की संख्या के बारे में जानने के लिए, डिस्ट्रिब्यूशन डैशबोर्ड देखें.

प्लैटफ़ॉर्म वर्शनAPI स्तरVERSION_CODEनोट
Android 17 37 CINNAMON_BUN प्लैटफ़ॉर्म की हाइलाइट
Android 16 36 BAKLAVA प्लैटफ़ॉर्म की हाइलाइट
Android 15 35 VANILLA_ICE_CREAM प्लैटफ़ॉर्म की हाइलाइट
Android 14 34 UPSIDE_DOWN_CAKE प्लैटफ़ॉर्म की हाइलाइट
Android 13 33 TIRAMISU प्लैटफ़ॉर्म की हाइलाइट
Android 12 32 S_V2 प्लैटफ़ॉर्म की हाइलाइट
31 S प्लैटफ़ॉर्म की हाइलाइट
Android 11 30 R प्लैटफ़ॉर्म की हाइलाइट
Android 10 29 Q प्लैटफ़ॉर्म की हाइलाइट
Android 9 28 P प्लैटफ़ॉर्म की हाइलाइट
Android 8.1 27 O_MR1 प्लैटफ़ॉर्म की हाइलाइट
Android 8.0 26 O प्लैटफ़ॉर्म की हाइलाइट
Android 7.1.1
Android 7.1
25 N_MR1 प्लैटफ़ॉर्म की हाइलाइट
Android 7.0 24 N प्लैटफ़ॉर्म की हाइलाइट
Android 6.0 23 M प्लैटफ़ॉर्म की हाइलाइट
Android 5.1 22 LOLLIPOP_MR1 प्लैटफ़ॉर्म की हाइलाइट
Android 5.0 21 LOLLIPOP
Android 4.4W 20 KITKAT_WATCH सिर्फ़ पहने जाने वाले डिवाइसों के लिए KitKat
Android 4.4 19 KITKAT प्लैटफ़ॉर्म की हाइलाइट
Android 4.3 18 JELLY_BEAN_MR2 प्लैटफ़ॉर्म की हाइलाइट
Android 4.2, 4.2.2 17 JELLY_BEAN_MR1 प्लैटफ़ॉर्म की हाइलाइट
Android 4.1, 4.1.1 16 JELLY_BEAN प्लैटफ़ॉर्म की हाइलाइट
Android 4.0.3, 4.0.4 15 ICE_CREAM_SANDWICH_MR1 प्लैटफ़ॉर्म की हाइलाइट
Android 4.0, 4.0.1, 4.0.2 14 ICE_CREAM_SANDWICH
Android 3.2 13 HONEYCOMB_MR2
Android 3.1.x 12 HONEYCOMB_MR1 प्लैटफ़ॉर्म की हाइलाइट
Android 3.0.x 11 HONEYCOMB प्लैटफ़ॉर्म की हाइलाइट
Android 2.3.4
Android 2.3.3
10 GINGERBREAD_MR1 प्लैटफ़ॉर्म की हाइलाइट
Android 2.3.2
Android 2.3.1
Android 2.3
9 GINGERBREAD
Android 2.2.x 8 FROYO प्लैटफ़ॉर्म की हाइलाइट
Android 2.1.x 7 ECLAIR_MR1 प्लैटफ़ॉर्म की हाइलाइट
Android 2.0.1 6 ECLAIR_0_1
Android 2.0 5 ECLAIR
Android 1.6 4 DONUT प्लैटफ़ॉर्म की हाइलाइट
Android 1.5 3 CUPCAKE प्लैटफ़ॉर्म की हाइलाइट
Android 1.1 2 BASE_1_1
Android 1.0 1 BASE

डेवलप किए जा रहे एपीआई

Android API के रेफ़रंस दस्तावेज़ में, कुछ एपीआई को पूर्णांक एपीआई लेवल के बजाय "एपीआई डेवलपमेंट के तहत" के तौर पर मार्क किया गया है. डेवलपमेंट के दौरान एपीआई में ये विशेषताएं होती हैं:

  • रिलीज़ से पहले की झलक का स्टेटस: ये एपीआई, फ़िलहाल बीटा या कैनरी वर्शन के एसडीके की रिलीज़ से पहले की झलक का हिस्सा हैं. साथ ही, ये अब तक प्लैटफ़ॉर्म के स्टेबल वर्शन में नहीं पहुंचे हैं.
  • स्थिरता की कोई गारंटी नहीं: रिलीज़ किए गए एपीआई के उलट, डेवलपमेंट के दौरान एपीआई के सिग्नेचर बदल सकते हैं, उनका नाम बदला जा सकता है या उन्हें पूरी तरह से हटाया जा सकता है. रिलीज़ किए गए एपीआई का एपीआई लेवल स्थायी होता है और वे आने वाले समय में रिलीज़ होने वाले वर्शन के साथ काम करते हैं.

रनटाइम के दौरान, डेवलपमेंट में मौजूद एपीआई की जांच करना (PREVIEW_SDK_INT)

डेवलपमेंट के दौरान एपीआई में बदलाव हो सकता है या वे प्रीव्यू रिलीज़ के बीच गायब हो सकते हैं. इसलिए, रिलीज़ नहीं किए गए एपीआई को कॉल करने से रोकने के लिए, कभी भी इससे ज़्यादा या इसके बराबर (>=) की जांच का इस्तेमाल न करें. ऐसा हो सकता है कि झलक 1 में मौजूद किसी एपीआई में बदलाव किया गया हो या उसे झलक 2 में हटा दिया गया हो.

इसके बजाय, झलक वाली सुविधाओं को आज़माने वाले ऐप्लिकेशन को, Build.VERSION.PREVIEW_SDK_INT वैल्यू की जांच करनी होगी. यह जांच, ऐप्लिकेशन को कंपाइल करने के लिए इस्तेमाल किए गए सटीक प्रीव्यू वर्शन के साथ स्ट्रिक्ट समानता (==) के लिए की जाएगी:

  • फ़ाइनल, प्रोडक्शन बिल्ड, और रिलीज़ पर, Build.VERSION.PREVIEW_SDK_INT हमेशा 0 होता है.
  • प्रीव्यू बिल्ड पर, PREVIEW_SDK_INT हर रिलीज़ के लिए यूनीक होता है.

Android में एपीआई लेवल का इस्तेमाल

एपीआई लेवल आइडेंटिफ़ायर, उपयोगकर्ताओं और ऐप्लिकेशन डेवलपर को बेहतर अनुभव देने में अहम भूमिका निभाता है:

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

Android प्लैटफ़ॉर्म का हर वर्शन, अपने एपीआई लेवल आइडेंटिफ़ायर को Android सिस्टम में सेव करता है.

ऐप्लिकेशन, फ़्रेमवर्क एपीआई से मिले मेनिफ़ेस्ट एलिमेंट—<uses-sdk>—का इस्तेमाल कर सकते हैं. इससे यह बताया जा सकता है कि ऐप्लिकेशन, कम से कम और ज़्यादा से ज़्यादा किस एपीआई लेवल पर काम कर सकते हैं. साथ ही, यह भी बताया जा सकता है कि ऐप्लिकेशन को किस एपीआई लेवल के साथ काम करने के लिए डिज़ाइन किया गया है. इस एलिमेंट में तीन मुख्य एट्रिब्यूट होते हैं:

  • android:minSdkVersion: यह ऐप्लिकेशन को चलाने के लिए ज़रूरी कम से कम एपीआई लेवल है. डिफ़ॉल्ट वैल्यू "1" होती है.
  • android:targetSdkVersion: यह उस एपीआई लेवल को दिखाता है जिस पर ऐप्लिकेशन को चलाने के लिए डिज़ाइन किया गया है. कुछ मामलों में, इससे ऐप्लिकेशन को टारगेट एपीआई लेवल में तय किए गए मेनिफ़ेस्ट एलिमेंट या व्यवहारों का इस्तेमाल करने की अनुमति मिलती है. इसके बजाय, सिर्फ़ उन एलिमेंट या व्यवहारों का इस्तेमाल करने की अनुमति मिलती है जो कम से कम एपीआई लेवल के लिए तय किए गए हैं.
  • android:maxSdkVersion: यह ऐप्लिकेशन के लिए, ज़्यादा से ज़्यादा एपीआई लेवल होता है. अहम जानकारी: इस एट्रिब्यूट का इस्तेमाल करने से पहले, इस पेज पर दी गई इस एट्रिब्यूट के बारे में जानकारी पढ़ें.

उदाहरण के लिए, किसी ऐप्लिकेशन को चलाने के लिए ज़रूरी कम से कम सिस्टम एपीआई लेवल तय करने के लिए, ऐप्लिकेशन अपने मेनिफ़ेस्ट में <uses-sdk> एलिमेंट को android:minSdkVersion एट्रिब्यूट के साथ शामिल करता है. android:minSdkVersion की वैल्यू, Android प्लैटफ़ॉर्म के सबसे पुराने वर्शन के एपीआई लेवल के हिसाब से तय होती है. इस वर्शन पर ऐप्लिकेशन काम कर सकता है.

जब कोई उपयोगकर्ता किसी ऐप्लिकेशन को इंस्टॉल करने की कोशिश करता है या सिस्टम अपडेट के बाद किसी ऐप्लिकेशन की पुष्टि दोबारा करता है, तो Android सिस्टम सबसे पहले ऐप्लिकेशन के मेनिफ़ेस्ट में मौजूद <uses-sdk> एट्रिब्यूट की जांच करता है. इसके बाद, वह वैल्यू की तुलना अपने इंटरनल एपीआई लेवल से करता है. सिस्टम, इन शर्तों के पूरा होने पर ही ऐप्लिकेशन इंस्टॉल करने की प्रोसेस शुरू होने देता है:

  • अगर android:minSdkVersion एट्रिब्यूट के बारे में बताया गया है, तो इसकी वैल्यू, सिस्टम के एपीआई लेवल के पूर्णांक से कम या इसके बराबर होती है. अगर इस बारे में जानकारी नहीं दी जाती है, तो सिस्टम यह मान लेता है कि ऐप्लिकेशन के लिए एपीआई लेवल 1 की ज़रूरत है.
  • अगर android:maxSdkVersion एट्रिब्यूट के बारे में बताया गया है, तो इसकी वैल्यू, सिस्टम के एपीआई लेवल के पूर्णांक के बराबर या उससे ज़्यादा होती है. अगर इस बारे में जानकारी नहीं दी जाती है, तो सिस्टम यह मान लेता है कि ऐप्लिकेशन का कोई ज़्यादा से ज़्यादा एपीआई लेवल नहीं है. सिस्टम इस एट्रिब्यूट को कैसे हैंडल करता है, इस बारे में ज़्यादा जानने के लिए इस एट्रिब्यूट का ब्यौरा पढ़ें.

किसी ऐप्लिकेशन के मेनिफ़ेस्ट में एलान किए जाने पर, <uses-sdk> एलिमेंट ऐसा दिख सकता है:

<manifest>
  <uses-sdk android:minSdkVersion="5" />
  ...
</manifest>

कोई ऐप्लिकेशन, android:minSdkVersion में एपीआई लेवल का एलान इसलिए करता है, ताकि Android सिस्टम को यह बताया जा सके कि वह ऐसे एपीआई का इस्तेमाल करता है जो बताए गए एपीआई लेवल में पेश किए गए थे.

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

डेवलपमेंट से जुड़ी बातें

यहां दिए गए सेक्शन में, एपीआई लेवल से जुड़ी जानकारी दी गई है. ऐप्लिकेशन डेवलप करते समय, आपको इस जानकारी को ध्यान में रखना होगा.

ऐप्लिकेशन के नए वर्शन के साथ काम करने की सुविधा

Android ऐप्लिकेशन आम तौर पर, Android प्लैटफ़ॉर्म के नए वर्शन के साथ काम करते हैं.

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

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

एपीआई के नीचे किए गए बदलाव, जैसे कि बुनियादी सिस्टम में किए गए बदलाव, नए एनवायरमेंट में ऐप्लिकेशन चलाने पर उस पर असर डाल सकते हैं. ऐप्लिकेशन डेवलपर के तौर पर, आपके लिए यह समझना ज़रूरी है कि ऐप्लिकेशन, हर सिस्टम एनवायरमेंट में कैसा दिखता है और कैसे काम करता है.

Android SDK में कई प्लैटफ़ॉर्म शामिल होते हैं. इन्हें डाउनलोड करके, Android प्लैटफ़ॉर्म के अलग-अलग वर्शन पर अपने ऐप्लिकेशन को टेस्ट किया जा सकता है. हर प्लैटफ़ॉर्म में, सिस्टम इमेज शामिल होती है. इसे AVD में चलाया जा सकता है, ताकि अपने ऐप्लिकेशन की जांच की जा सके.

ऐप्लिकेशन के पिछले वर्शन के साथ काम करने की सुविधा

Android ऐप्लिकेशन, Android प्लैटफ़ॉर्म के उन वर्शन के साथ काम नहीं करते जिनके लिए उन्हें कंपाइल किया गया है.

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

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

प्लैटफ़ॉर्म का वर्शन और एपीआई लेवल चुनना

ऐप्लिकेशन डेवलप करते समय, आपको उस प्लैटफ़ॉर्म वर्शन को चुनना होता है जिसके हिसाब से ऐप्लिकेशन को कंपाइल किया जाता है. आम तौर पर, अपने ऐप्लिकेशन को प्लैटफ़ॉर्म के उस वर्शन के हिसाब से कंपाइल करें जिस पर आपका ऐप्लिकेशन काम कर सकता है.

ऐप्लिकेशन को लगातार कम बिल्ड टारगेट के हिसाब से कंपाइल करके, प्लैटफ़ॉर्म के सबसे पुराने वर्शन का पता लगाया जा सकता है. सबसे पुराने वर्शन का पता लगाने के बाद, उसी प्लैटफ़ॉर्म वर्शन और एपीआई लेवल का इस्तेमाल करके एवीडी बनाएं. इसके बाद, अपने ऐप्लिकेशन की पूरी तरह से जांच करें. पक्का करें कि आपने ऐप्लिकेशन के मेनिफ़ेस्ट में android:minSdkVersion एट्रिब्यूट का एलान किया हो. साथ ही, इसकी वैल्यू को प्लैटफ़ॉर्म वर्शन के एपीआई लेवल पर सेट किया हो.

कम से कम एपीआई लेवल का एलान करना

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

अगर आपका ऐप्लिकेशन, प्लैटफ़ॉर्म के नए वर्शन में पेश किए गए एपीआई का इस्तेमाल करता है, लेकिन android:minSdkVersion एट्रिब्यूट का एलान नहीं करता है, तो यह प्लैटफ़ॉर्म के नए वर्शन वाले डिवाइसों पर ठीक से काम करता है. हालांकि, यह प्लैटफ़ॉर्म के पुराने वर्शन वाले डिवाइसों पर नहीं काम करता. दूसरे मामले में, जब ऐप्लिकेशन ऐसे एपीआई का इस्तेमाल करने की कोशिश करता है जो पुराने वर्शन में मौजूद नहीं हैं, तो रनटाइम के दौरान ऐप्लिकेशन क्रैश हो जाता है.

ज़्यादा एपीआई लेवल के हिसाब से जांच करना

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

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

अपडेटर को ऐक्सेस करने के लिए, android कमांड-लाइन टूल का इस्तेमाल करें. यह <sdk>/tools डायरेक्ट्री में मौजूद होता है. android sdk को लागू करके, SDK अपडेटर लॉन्च किया जा सकता है. android.bat (Windows) या android (OS X/Linux) फ़ाइल पर दो बार क्लिक करके भी इसे खोला जा सकता है.

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

एपीआई लेवल के हिसाब से, रेफ़रंस दस्तावेज़ को फ़िल्टर करना

Android प्लैटफ़ॉर्म के रेफ़रंस दस्तावेज़ों वाले पेजों पर, हर पेज के सबसे ऊपर बाईं ओर "एपीआई लेवल" कंट्रोल होता है. इस कंट्रोल का इस्तेमाल करके, एपीआई के सिर्फ़ उन हिस्सों के लिए दस्तावेज़ दिखाया जा सकता है जिन्हें आपका ऐप्लिकेशन ऐक्सेस कर सकता है. ऐसा, मेनिफ़ेस्ट फ़ाइल के android:minSdkVersion एट्रिब्यूट में बताए गए एपीआई लेवल के आधार पर किया जाता है.

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

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

पूरा दस्तावेज़ फिर से देखने के लिए, एपीआई लेवल मेन्यू में सबसे ऊपर मौजूद REL चुनें. एपीआई लेवल के हिसाब से फ़िल्टर करने की सुविधा डिफ़ॉल्ट रूप से बंद होती है. इससे आपको एपीआई लेवल के बावजूद, पूरा फ़्रेमवर्क एपीआई दिखता है.

एपीआई के अलग-अलग एलिमेंट के लिए उपलब्ध रेफ़रंस दस्तावेज़ में, उस एपीआई लेवल के बारे में बताया जाता है जिस पर हर एलिमेंट को पेश किया गया है. पैकेज और क्लास के लिए एपीआई लेवल, हर दस्तावेज़ पेज पर कॉन्टेंट एरिया के सबसे ऊपर दाईं ओर "Added in API level" के तौर पर दिया गया है. क्लास के सदस्यों के लिए एपीआई लेवल, उनके ब्यौरे वाले हेडर में दाईं ओर दिया गया है. रिलीज़ से पहले वाले ऐसे एपीआई के लिए जो अब तक प्लैटफ़ॉर्म स्टैबिलिटी तक नहीं पहुंचे हैं, इस जगह पर एपीआई लेवल इंटिजर के बजाय "एपीआई डेवलपमेंट में है" दिखता है.