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 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 प्लैटफ़ॉर्म के हर वर्शन के साथ काम करने वाले एपीआई लेवल के बारे में बताया गया है. हर वर्शन को इस्तेमाल करने वाले डिवाइसों की संख्या के बारे में जानने के लिए, डिस्ट्रिब्यूशन डैशबोर्ड देखें.
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 एट्रिब्यूट में बताए गए प्लैटफ़ॉर्म पर टेस्ट किया हो. इसके लिए, ऐसा AVD बनाएं जो आपके ऐप्लिकेशन के लिए ज़रूरी प्लैटफ़ॉर्म वर्शन का इस्तेमाल करता हो. इसके अलावा, आगे आने वाले वर्शन के साथ काम करने की सुविधा की जांच करने के लिए, अपने ऐप्लिकेशन को उन सभी प्लैटफ़ॉर्म पर चलाएं और टेस्ट करें जो आपके ऐप्लिकेशन के इस्तेमाल किए गए एपीआई लेवल से ज़्यादा एपीआई लेवल का इस्तेमाल करते हैं.
Android SDK टूल में, कई प्लैटफ़ॉर्म वर्शन शामिल होते हैं. इनका इस्तेमाल किया जा सकता है. इनमें नया वर्शन भी शामिल है. साथ ही, इसमें अपडेट करने वाला एक टूल भी होता है. इसका इस्तेमाल करके, ज़रूरत के हिसाब से अन्य प्लैटफ़ॉर्म वर्शन डाउनलोड किए जा सकते हैं.
अपडेटर को ऐक्सेस करने के लिए, android कमांड-लाइन टूल का इस्तेमाल करें. यह <sdk>/tools डायरेक्ट्री में मौजूद होता है. android sdk को लागू करके, SDK अपडेटर लॉन्च किया जा सकता है. android.bat (Windows) या android (OS X/Linux) फ़ाइल पर दो बार क्लिक करके भी इसे खोला जा सकता है.
एम्युलेटर में अलग-अलग प्लैटफ़ॉर्म वर्शन पर अपना ऐप्लिकेशन चलाने के लिए, हर उस प्लैटफ़ॉर्म वर्शन के लिए एक AVD बनाएं जिसकी आपको जांच करनी है. AVD के बारे में ज़्यादा जानकारी के लिए, वर्चुअल डिवाइस बनाना और उन्हें मैनेज करना लेख पढ़ें. अगर आपको जांच के लिए किसी फ़िज़िकल डिवाइस का इस्तेमाल करना है, तो पक्का करें कि आपको उस Android प्लैटफ़ॉर्म का एपीआई लेवल पता हो जिस पर वह डिवाइस काम करता है. प्लैटफ़ॉर्म वर्शन और उनके एपीआई लेवल की सूची के लिए, इस दस्तावेज़ में दी गई टेबल देखें.
एपीआई लेवल के हिसाब से, रेफ़रंस दस्तावेज़ को फ़िल्टर करना
Android प्लैटफ़ॉर्म के रेफ़रंस दस्तावेज़ों वाले पेजों पर, हर पेज के सबसे ऊपर बाईं ओर "एपीआई लेवल" कंट्रोल होता है. इस कंट्रोल का इस्तेमाल करके, एपीआई के सिर्फ़ उन हिस्सों के लिए दस्तावेज़ दिखाया जा सकता है जिन्हें आपका ऐप्लिकेशन ऐक्सेस कर सकता है. ऐसा, मेनिफ़ेस्ट फ़ाइल के android:minSdkVersion एट्रिब्यूट में बताए गए एपीआई लेवल के आधार पर किया जाता है.
फ़िल्टर करने की सुविधा का इस्तेमाल करने के लिए, मेन्यू से अपने ऐप्लिकेशन के लिए तय किया गया एपीआई लेवल चुनें. बाद के एपीआई लेवल में पेश किए गए एपीआई, धूसर हो जाते हैं और उनका कॉन्टेंट मास्क कर दिया जाता है. ऐसा इसलिए होता है, क्योंकि आपके ऐप्लिकेशन के लिए वे ऐक्सेस नहीं किए जा सकते.
दस्तावेज़ में एपीआई लेवल के हिसाब से फ़िल्टर करने पर, यह नहीं दिखता कि हर एपीआई लेवल में नया क्या है या क्या जोड़ा गया है. इससे किसी दिए गए एपीआई लेवल से जुड़े पूरे एपीआई को देखा जा सकता है. हालांकि, इसमें बाद के एपीआई लेवल में जोड़े गए एपीआई एलिमेंट शामिल नहीं होते.
पूरा दस्तावेज़ देखने के लिए, एपीआई लेवल मेन्यू में सबसे ऊपर मौजूद REL चुनें. एपीआई लेवल के हिसाब से फ़िल्टर करने की सुविधा डिफ़ॉल्ट रूप से बंद होती है, ताकि एपीआई लेवल कुछ भी हो, आपको पूरा फ़्रेमवर्क एपीआई दिख सके.
एपीआई के अलग-अलग एलिमेंट के लिए उपलब्ध रेफ़रंस दस्तावेज़ में, उस एपीआई लेवल के बारे में बताया जाता है जिस पर हर एलिमेंट को पेश किया गया है. पैकेज और क्लास के लिए एपीआई लेवल, हर दस्तावेज़ पेज पर कॉन्टेंट एरिया के सबसे ऊपर दाईं ओर "Added in API level" के तौर पर दिया गया है. क्लास के सदस्यों के लिए एपीआई लेवल की जानकारी, उनके ब्यौरे के हेडर में दी गई है. यह जानकारी, दाईं ओर मौजूद मार्जिन में दी गई है.