<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 एट्रिब्यूट की वैल्यू, सिस्टम के इस्तेमाल किए गए एपीआई लेवल से कम है, तो सिस्टम ऐप्लिकेशन को इंस्टॉल करने की अनुमति नहीं देता. सिस्टम अपडेट के बाद फिर से पुष्टि करने पर, आपका ऐप्लिकेशन डिवाइस से हट जाता है.

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

ऐसा ऐप्लिकेशन जिसे Google Play पर पब्लिश किया गया है और जिसका मेनिफ़ेस्ट में maxSdkVersion="5" एट्रिब्यूट मौजूद है. किसी उपयोगकर्ता का डिवाइस, 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 16 एपीआई 35 → DP1 प्लैटफ़ॉर्म की हाइलाइट
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 में एपीआई लेवल के इस्तेमाल

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

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

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

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

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

उदाहरण के लिए, किसी ऐप्लिकेशन को चलाने के लिए, सिस्टम के कम से कम एपीआई लेवल की जानकारी देने के लिए, ऐप्लिकेशन अपने मेनिफ़ेस्ट में android:minSdkVersion एट्रिब्यूट वाला <uses-sdk> एलिमेंट शामिल करता है. 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 वाले कई डिवाइसों पर, सिस्टम के अपडेट ओवर-द-एयर (ओटीए) से मिलते हैं. हो सकता है कि उपयोगकर्ता आपका ऐप्लिकेशन इंस्टॉल करके उसका इस्तेमाल कर ले. इसके बाद, उसे Android प्लैटफ़ॉर्म के नए वर्शन के लिए ओटीए अपडेट मिल जाए. अपडेट इंस्टॉल होने के बाद, आपका ऐप्लिकेशन, एनवायरमेंट के नए रनटाइम वर्शन में चलता है. हालांकि, इसमें अब भी वे एपीआई और सिस्टम की सुविधाएं मौजूद होती हैं जिन पर आपका ऐप्लिकेशन निर्भर करता है.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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