<uses-sdk>

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

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

इसकी मदद से, एपीआई लेवल के पूर्णांक के ज़रिए यह बताया जा सकता है कि कोई ऐप्लिकेशन, 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 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 में एपीआई लेवल का इस्तेमाल

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

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

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

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) फ़ाइल पर दो बार क्लिक करके भी इसे खोला जा सकता है.

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

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

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

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

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

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

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