Android के नए वर्शन में, अक्सर आपके ऐप्लिकेशन के लिए बेहतरीन एपीआई उपलब्ध होते हैं. हालांकि, आपको Android के पुराने वर्शन के लिए भी सहायता जारी रखनी चाहिए. ऐसा तब तक करें, जब तक ज़्यादातर डिवाइस अपडेट न हो जाएं. इस लेसन में, आपको यह बताया गया है कि पुराने वर्शन के साथ-साथ नए एपीआई का फ़ायदा कैसे लिया जाए.
Android के हर वर्शन का इस्तेमाल करने वाले ऐक्टिव डिवाइसों की संख्या जानने के लिए, Android Studio के नया प्रोजेक्ट विज़र्ड का इस्तेमाल करें. यह डिस्ट्रिब्यूशन, Google Play Store पर आने वाले डिवाइसों की संख्या के आधार पर होता है. आम तौर पर, हमारा सुझाव है कि ऐक्टिव डिवाइसों में से करीब 90% डिवाइसों के लिए, ऐप्लिकेशन को उपलब्ध कराया जाए. साथ ही, ऐप्लिकेशन को नए वर्शन के लिए टारगेट किया जाए.
अहम जानकारी: Android के अलग-अलग वर्शन पर बेहतरीन सुविधाएं और फ़ंक्शन उपलब्ध कराने के लिए, आपको अपने ऐप्लिकेशन में Android Support Library का इस्तेमाल करना चाहिए. इससे आपको पुराने वर्शन पर, हाल ही के कई प्लैटफ़ॉर्म एपीआई इस्तेमाल करने की अनुमति मिलती है.
कम से कम और टारगेट एपीआई लेवल तय करना
AndroidManifest.xml फ़ाइल में, आपके ऐप्लिकेशन के बारे में जानकारी होती है. साथ ही, यह भी पता चलता है कि यह Android के किन वर्शन पर काम करता है. खास तौर पर, <uses-sdk>
एलिमेंट के लिए minSdkVersion
और targetSdkVersion
एट्रिब्यूट, सबसे कम एपीआई लेवल की पहचान करते हैं. इससे पता चलता है कि आपका ऐप्लिकेशन किस एपीआई लेवल के साथ काम करता है. साथ ही, इससे सबसे ज़्यादा एपीआई लेवल की पहचान होती है. इससे पता चलता है कि आपने अपने ऐप्लिकेशन को किस एपीआई लेवल के लिए डिज़ाइन और टेस्ट किया है.
उदाहरण के लिए:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... > <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" /> ... </manifest>
Android के नए वर्शन रिलीज़ होने पर, कुछ स्टाइल और व्यवहार में बदलाव हो सकता है.
इन बदलावों का फ़ायदा पाने के लिए, अपने ऐप्लिकेशन को अनुमति दें. साथ ही, यह पक्का करें कि आपका ऐप्लिकेशन, हर उपयोगकर्ता के डिवाइस के स्टाइल के हिसाब से काम करे. इसके लिए, आपको targetSdkVersion
वैल्यू को Android के उपलब्ध नए वर्शन के हिसाब से सेट करना होगा.
एसडीके के माइनर वर्शन, व्यवहार में होने वाले बदलावों से जुड़े नहीं होते. इसलिए, targetSdkVersion
को एसडीके के माइनर वर्शन के हिसाब से सेट नहीं किया जा सकता. अगर आपको अपने minSdkVersion
से ज़्यादा नए माइनर एसडीके वर्शन में किसी एपीआई को कॉल करना है, तो रनटाइम के दौरान सिस्टम वर्शन देखें.
रनटाइम के दौरान सिस्टम का वर्शन देखना
Android, Build
constants क्लास में हर प्लैटफ़ॉर्म वर्शन के लिए एक यूनीक कोड उपलब्ध कराता है. अपने ऐप्लिकेशन में इन कोड का इस्तेमाल करके, ऐसी शर्तें बनाएं जिनसे यह पक्का किया जा सके कि ज़्यादा एपीआई लेवल पर निर्भर रहने वाला कोड सिर्फ़ तब एक्ज़ीक्यूट हो, जब सिस्टम पर वे एपीआई उपलब्ध हों.
Kotlin
private fun setUpActionBar() { // Make sure we're running on Honeycomb or higher to use ActionBar APIs if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { actionBar.setDisplayHomeAsUpEnabled(true) } }
Java
private void setUpActionBar() { // Make sure we're running on Honeycomb or higher to use ActionBar APIs if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { ActionBar actionBar = getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); } }
Build.VERSION.SDK_INT_FULL का इस्तेमाल करके, SDK टूल के मेजर या माइनर वर्शन की मौजूदगी की जांच की जा सकती है.
Kotlin
if (SDK_INT_FULL >= VERSION_CODES_FULL.[MAJOR or MINOR RELEASE]) { // Use APIs introduced in a major or minor SDK release }
Java
if (SDK_INT_FULL >= VERSION_CODES_FULL.[MAJOR or MINOR RELEASE]) { // Use APIs introduced in a major or minor SDK release }
ध्यान दें: एक्सएमएल रिसॉर्स को पार्स करते समय, Android उन एक्सएमएल एट्रिब्यूट को अनदेखा कर देता है जो मौजूदा डिवाइस पर काम नहीं करते. इसलिए, एक्सएमएल एट्रिब्यूट का सुरक्षित तरीके से इस्तेमाल किया जा सकता है. ये एट्रिब्यूट सिर्फ़ नए वर्शन के साथ काम करते हैं. साथ ही, पुराने वर्शन में इस कोड का इस्तेमाल करने पर, उनके काम न करने की समस्या नहीं आती. उदाहरण के लिए, अगर आपने targetSdkVersion="11"
सेट किया है, तो आपका ऐप्लिकेशन Android 3.0 और इसके बाद के वर्शन पर डिफ़ॉल्ट रूप से ActionBar
को शामिल करता है. इसके बाद, ऐक्शन बार में मेन्यू आइटम जोड़ने के लिए, आपको अपने मेन्यू रिसॉर्स एक्सएमएल में android:showAsAction="ifRoom"
सेट करना होगा. क्रॉस-वर्शन वाली एक्सएमएल फ़ाइल में ऐसा करना सुरक्षित है, क्योंकि Android के पुराने वर्शन showAsAction
एट्रिब्यूट को अनदेखा कर देते हैं. इसका मतलब है कि आपको res/menu-v11/
में अलग वर्शन की ज़रूरत नहीं है.
प्लैटफ़ॉर्म की स्टाइल और थीम का इस्तेमाल करना
Android, उपयोगकर्ता अनुभव से जुड़ी थीम उपलब्ध कराता है. इनकी मदद से, ऐप्लिकेशन को ऑपरेटिंग सिस्टम जैसा लुक और स्टाइल मिलता है. इन थीम को मेनिफ़ेस्ट फ़ाइल में जाकर, अपने ऐप्लिकेशन पर लागू किया जा सकता है. पहले से मौजूद इन स्टाइल और थीम का इस्तेमाल करने पर, आपका ऐप्लिकेशन हर नई रिलीज़ के साथ Android के नए लुक और फ़ील को अपने-आप फ़ॉलो करेगा.
अपनी गतिविधि को डायलॉग बॉक्स की तरह दिखाने के लिए:
<activity android:theme="@android:style/Theme.Dialog">
अपनी गतिविधि के बैकग्राउंड को पारदर्शी बनाने के लिए:
<activity android:theme="@android:style/Theme.Translucent">
/res/values/styles.xml
में तय की गई, पसंद के मुताबिक थीम लागू करने के लिए:
<activity android:theme="@style/CustomTheme">
अपने पूरे ऐप्लिकेशन (सभी गतिविधियों) पर कोई थीम लागू करने के लिए, <application>
एलिमेंट में android:theme
attribute
जोड़ें:
<application android:theme="@style/CustomTheme">
थीम बनाने और उनका इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, स्टाइल और थीम गाइड पढ़ें.