Android को फ़ोन, टैबलेट, और टीवी जैसे कई अलग-अलग डिवाइसों पर काम करने के लिए डिज़ाइन किया गया है. अलग-अलग डिवाइसों पर आपका ऐप्लिकेशन उपलब्ध होने से, आपको ज़्यादा लोगों तक पहुंचने का मौका मिलता है. सभी डिवाइसों पर आपका ऐप्लिकेशन सही तरीके से काम करे, इसके लिए ज़रूरी है कि वह अलग-अलग सुविधाओं के साथ काम कर सके. साथ ही, उसमें ऐसा फ़्लेक्सिबल यूज़र इंटरफ़ेस होना चाहिए जो अलग-अलग स्क्रीन कॉन्फ़िगरेशन के हिसाब से अडजस्ट हो सके.
डिवाइस के साथ कंपैटबिलटी बनाए रखने के लिए, Android एक डाइनैमिक ऐप्लिकेशन फ़्रेमवर्क उपलब्ध कराता है. इसमें, स्टैटिक फ़ाइलों में कॉन्फ़िगरेशन के हिसाब से ऐप्लिकेशन के संसाधन उपलब्ध कराए जा सकते हैं. जैसे, अलग-अलग स्क्रीन साइज़ के लिए अलग-अलग XML लेआउट. इसके बाद, Android, डिवाइस के मौजूदा कॉन्फ़िगरेशन के हिसाब से सही संसाधन लोड करता है. ऐप्लिकेशन के डिज़ाइन और अतिरिक्त संसाधनों के बारे में पहले से सोच-समझकर, ऐप्लिकेशन का एक पैकेज (एपीके) पब्लिश किया जा सकता है. इससे अलग-अलग डिवाइसों पर उपयोगकर्ता अनुभव को ऑप्टिमाइज़ किया जा सकता है.
हालांकि, ज़रूरत पड़ने पर, अपने ऐप्लिकेशन की सुविधाओं से जुड़ी ज़रूरी शर्तें तय की जा सकती हैं. साथ ही, यह कंट्रोल किया जा सकता है कि Google Play Store से आपका ऐप्लिकेशन किस तरह के डिवाइसों पर इंस्टॉल किया जा सकता है. इस दस्तावेज़ में बताया गया है कि यह कैसे कंट्रोल किया जा सकता है कि किन डिवाइसों पर आपके ऐप्लिकेशन ऐक्सेस किए जा सकते हैं. साथ ही, अपने ऐप्लिकेशन को सही ऑडियंस तक पहुंचाने के लिए, उन्हें कैसे तैयार किया जा सकता है.
"कंपैटबिलटी" का क्या मतलब है?
Android डेवलपमेंट के मामले में, कंपैटबिलटी दो तरह की होती है: डिवाइस कंपैटबिलटी और ऐप्लिकेशन कंपैटबिलटी.
Android एक ओपन-सोर्स प्रोजेक्ट है. इसलिए, कोई भी हार्डवेयर बनाने वाली कंपनी, Android ऑपरेटिंग सिस्टम पर काम करने वाला डिवाइस बना सकती है. हालांकि, कोई डिवाइस "Android के साथ कंपैटिबल" सिर्फ़ तब माना जाता है, जब वह Android एक्ज़ीक्यूशन एनवायरमेंट के लिए लिखे गए ऐप्लिकेशन को सही तरीके से चला सके. Android एक्ज़ीक्यूशन एनवायरमेंट के बारे में पूरी जानकारी, Android कंपैटबिलटी प्रोग्राम में दी जाती है. कंपैटिबल माने जाने के लिए, हर डिवाइस को कंपैटबिलटी टेस्ट सुइट (सीटीएस) पास करना ज़रूरी है.
ऐप्लिकेशन डेवलपर के तौर पर, आपको इस बारे में चिंता करने की ज़रूरत नहीं है कि कोई डिवाइस Android के साथ कंपैटिबल है या नहीं. ऐसा इसलिए, क्योंकि सिर्फ़ Android के साथ कंपैटिबल डिवाइसों में Google Play Store शामिल होता है. इसलिए, अगर कोई उपयोगकर्ता Google Play Store से आपका ऐप्लिकेशन इंस्टॉल करता है, तो वह Android के साथ कंपैटिबल डिवाइस का इस्तेमाल कर रहा है.
हालांकि, आपको यह देखना होगा कि आपका ऐप्लिकेशन, डिवाइस के हर संभावित कॉन्फ़िगरेशन के साथ कंपैटिबल है या नहीं. Android, डिवाइस के कई कॉन्फ़िगरेशन पर काम करता है. इसलिए, कुछ सुविधाएं सभी डिवाइसों पर उपलब्ध नहीं होती हैं. उदाहरण के लिए, हो सकता है कि कुछ डिवाइसों में कंपास सेंसर मौजूद न हो. अगर आपके ऐप्लिकेशन के मुख्य फ़ंक्शन के लिए कंपास सेंसर इस्तेमाल करना ज़रूरी हो, तो आपका ऐप्लिकेशन सिर्फ़ उन डिवाइसों पर काम करेगा जिनमें यह सुविधा मौजूद है.
यह कंट्रोल करना कि आपका ऐप्लिकेशन किन डिवाइसों पर उपलब्ध होगा
Android, कई तरह की सुविधाएं उपलब्ध कराता है. प्लैटफ़ॉर्म एपीआई की मदद से, आपका ऐप्लिकेशन इन सुविधाओं का फ़ायदा उठा सकता है. कुछ सुविधाएं हार्डवेयर पर आधारित होती हैं. जैसे, कंपास सेंसर. कुछ सुविधाएं सॉफ़्टवेयर पर आधारित होती हैं. जैसे, ऐप्लिकेशन विजेट. वहीं, कुछ सुविधाएं प्लैटफ़ॉर्म के वर्शन पर निर्भर करती हैं. हर डिवाइस, हर सुविधा के साथ काम नहीं करता. इसलिए, आपको यह कंट्रोल करना पड़ सकता है कि आपका ऐप्लिकेशन किन डिवाइसों पर उपलब्ध होगा. यह इस बात पर निर्भर करता है कि आपके ऐप्लिकेशन के लिए कौनसी सुविधाएं ज़रूरी हैं.
अपने ऐप्लिकेशन के लिए ज़्यादा से ज़्यादा उपयोगकर्ता पाने के लिए, एक एपीके या एएबी का इस्तेमाल करके, डिवाइस के ज़्यादा से ज़्यादा कॉन्फ़िगरेशन के साथ कंपैटबिलटी बनाए रखें. ज़्यादातर मामलों में, ऐसा रनटाइम पर वैकल्पिक सुविधाएं बंद करके किया जा सकता है. साथ ही, ऐप्लिकेशन संसाधन अलग-अलग कॉन्फ़िगरेशन के लिए उपलब्ध कराकर किया जा सकता है. जैसे, अलग-अलग स्क्रीन साइज़ के लिए अलग-अलग लेआउट. ज़रूरत पड़ने पर, Google Play Store के ज़रिए, कुछ डिवाइसों के लिए अपने ऐप्लिकेशन की उपलब्धता को सीमित किया जा सकता है. इसके लिए, डिवाइस की इन विशेषताओं का इस्तेमाल किया जा सकता है:
डिवाइस की सुविधाएं
डिवाइस की सुविधाओं के हिसाब से, अपने ऐप्लिकेशन की उपलब्धता मैनेज करने के लिए, Android सुविधा आईडी तय करता है. यह आईडी, हार्डवेयर या सॉफ़्टवेयर की किसी भी ऐसी सुविधा के लिए तय किया जाता है जो सभी डिवाइसों पर उपलब्ध नहीं हो सकती. उदाहरण के लिए, कंपास सेंसर के लिए सुविधा आईडी FEATURE_SENSOR_COMPASS है. वहीं, ऐप्लिकेशन विजेट के लिए सुविधा आईडी FEATURE_APP_WIDGETS है.
ज़रूरत पड़ने पर, उपयोगकर्ताओं को आपका ऐप्लिकेशन इंस्टॉल करने से रोका जा सकता है. ऐसा तब किया जा सकता है, जब उनके
डिवाइसों में कोई ज़रूरी सुविधा उपलब्ध न हो. इसके लिए, अपने ऐप्लिकेशन की
<uses-feature>
एलिमेंट का इस्तेमाल करके, सुविधा के बारे में जानकारी दें. यह जानकारी, आपके ऐप्लिकेशन की
मेनिफ़ेस्ट फ़ाइल में दी जा सकती है.
उदाहरण के लिए, अगर आपका ऐप्लिकेशन ऐसे डिवाइस पर काम नहीं करता जिसमें कंपास सेंसर नहीं है, तो कंपास सेंसर को ज़रूरी सुविधा के तौर पर बताया जा सकता है. इसके लिए, मेनिफ़ेस्ट में यह टैग इस्तेमाल करें:
<manifest ... > <uses-feature android:name="android.hardware.sensor.compass" android:required="true" /> ... </manifest>
Google Play Store, यह तय करने के लिए कि आपका ऐप्लिकेशन हर डिवाइस के साथ कंपैटिबल है या नहीं, यह तुलना करता है कि आपके ऐप्लिकेशन के लिए कौनसी सुविधाएं ज़रूरी हैं और हर उपयोगकर्ता के डिवाइस पर कौनसी सुविधाएं उपलब्ध हैं. अगर डिवाइस में वे सभी सुविधाएं नहीं हैं जो आपके ऐप्लिकेशन के लिए ज़रूरी हैं, तो उपयोगकर्ता आपका ऐप्लिकेशन इंस्टॉल नहीं कर पाएगा.
हालांकि, अगर आपके ऐप्लिकेशन के मुख्य फ़ंक्शन के लिए डिवाइस की किसी सुविधा की ज़रूरत नहीं है, तो required एट्रिब्यूट को "false" पर सेट करें. साथ ही, रनटाइम पर डिवाइस की सुविधा की जांच करें.
अगर मौजूदा डिवाइस पर ऐप्लिकेशन की सुविधा उपलब्ध नहीं है, तो ऐप्लिकेशन की उस सुविधा को बंद कर दें. उदाहरण के लिए, यह क्वेरी की जा सकती है कि कोई सुविधा उपलब्ध है या नहीं. इसके लिए, hasSystemFeature() को इस तरह कॉल करें:
Kotlin
if (!packageManager.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) { // This device doesn't have a compass. Turn off the compass feature. disableCompassFeature() }
Java
PackageManager pm = getPackageManager(); if (!pm.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) { // This device doesn't have a compass. Turn off the compass feature. disableCompassFeature(); }
Google Play Store के ज़रिए, अपने ऐप्लिकेशन की उपलब्धता को कंट्रोल करने के लिए इस्तेमाल किए जा सकने वाले सभी फ़िल्टर के बारे में जानने के लिए, Google Play पर फ़िल्टर से जुड़ा दस्तावेज़ देखें.
प्लैटफ़ॉर्म वर्शन
अलग-अलग डिवाइसों पर, Android प्लैटफ़ॉर्म के अलग-अलग वर्शन काम कर सकते हैं. जैसे, Android 12 या Android 13. प्लैटफ़ॉर्म के हर नए वर्शन में, अक्सर ऐसे एपीआई जोड़े जाते हैं जो पिछले वर्शन में उपलब्ध नहीं होते. यह बताने के लिए कि एपीआई का कौनसा सेट उपलब्ध है, प्लैटफ़ॉर्म का हर वर्शन एक एपीआई लेवल तय करता है. उदाहरण के लिए, Android 12 का एपीआई लेवल 31 है. वहीं, Android 13 का एपीआई लेवल 33 है.
आपको अपनी build.gradle फ़ाइल में,
minSdkVersion
और
targetSdkVersion
की वैल्यू तय करनी होंगी:
Kotlin
android { defaultConfig { applicationId = "com.example.myapp" // Defines the minimum API level required to run the app. minSdkVersion(30) // Specifies the API level used to test the app. targetSdkVersion(36) ... } }
शानदार
android { defaultConfig { applicationId 'com.example.myapp' // Defines the minimum API level required to run the app. minSdkVersion 30 // Specifies the API level used to test the app. targetSdkVersion 36 ... } }
build.gradle फ़ाइल के बारे में ज़्यादा जानने के लिए, अपना बिल्ड कॉन्फ़िगर करना लेख पढ़ें.
Android के हर नए वर्शन में, प्लैटफ़ॉर्म के पिछले वर्शन के एपीआई का इस्तेमाल करके बनाए गए ऐप्लिकेशन के साथ कंपैटबिलटी बनाए रखने की सुविधा मिलती है. इसलिए, दस्तावेज़ में बताए गए Android एपीआई का इस्तेमाल करने पर, आपका ऐप्लिकेशन Android के आने वाले वर्शन के साथ कंपैटिबल होगा.
हालांकि, अगर आपका ऐप्लिकेशन, प्लैटफ़ॉर्म के किसी नए वर्शन में जोड़े गए एपीआई का इस्तेमाल करता है, लेकिन अपने मुख्य फ़ंक्शन के लिए उसे इन एपीआई की ज़रूरत नहीं है, तो रनटाइम पर एपीआई लेवल की जांच करें. साथ ही, एपीआई लेवल बहुत कम होने पर, उससे जुड़ी सुविधाओं को बंद कर दें. इस मामले में, minSdkVersion को उस सबसे कम वैल्यू पर सेट करें जो आपके ऐप्लिकेशन के मुख्य फ़ंक्शन के लिए ज़रूरी है. इसके बाद, मौजूदा सिस्टम के वर्शन, SDK_INT की तुलना, Build.VERSION_CODES में मौजूद कोडनेम कॉन्स्टैंट से करें. यह कॉन्स्टैंट, उस एपीआई लेवल से जुड़ा होता है जिसकी आपको जांच करनी है. जैसा कि यहां दिए गए उदाहरण में दिखाया गया है:
Kotlin
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { // Running on something older than API level 11, so disable // the drag and drop features that use ClipboardManager APIs. disableDragAndDrop() }
Java
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { // Running on something older than API level 11, so disable // the drag and drop features that use ClipboardManager APIs. disableDragAndDrop(); }
स्क्रीन कॉन्फ़िगरेशन
Android, फ़ोन, टैबलेट, और टीवी जैसे अलग-अलग साइज़ के डिवाइसों पर काम करता है. डिवाइसों को उनकी स्क्रीन के टाइप के हिसाब से कैटगरी में बांटने के लिए, Android हर डिवाइस के लिए दो विशेषताएं तय करता है: स्क्रीन साइज़ (स्क्रीन का फ़िज़िकल साइज़) और स्क्रीन डेंसिटी (स्क्रीन पर पिक्सल की फ़िज़िकल डेंसिटी, जिसे डीपीआई कहा जाता है). अलग-अलग कॉन्फ़िगरेशन को आसान बनाने के लिए, Android इन वैरिएंट को ग्रुप में बांटता है. इससे इन्हें टारगेट करना आसान हो जाता है:
- सामान्य तौर पर चार साइज़: छोटा, सामान्य, बड़ा, और xlarge
- सामान्य तौर पर कई डेंसिटी: mdpi (मीडियम), hdpi (हाई), xhdpi (एक्स्ट्रा हाई), xxhdpi (एक्स्ट्रा-एक्स्ट्रा हाई) वगैरह
डिफ़ॉल्ट रूप से, आपका ऐप्लिकेशन सभी स्क्रीन साइज़ और डेंसिटी के साथ कंपैटिबल होता है. ऐसा इसलिए, क्योंकि सिस्टम हर स्क्रीन के लिए, आपके यूज़र इंटरफ़ेस लेआउट और इमेज संसाधनों में ज़रूरत के हिसाब से बदलाव करता है. स्क्रीन की सामान्य डेंसिटी के लिए, ऑप्टिमाइज़ की गई बिटमैप इमेज उपलब्ध कराएं.
फ़्लेक्सिबल लेआउट का ज़्यादा से ज़्यादा इस्तेमाल करके, उपयोगकर्ता अनुभव को ऑप्टिमाइज़ करें. अगर बड़े कॉन्फ़िगरेशन में बदलाव के लिए लेआउट मौजूद हैं, जैसे कि पोर्ट्रेट और लैंडस्केप या बड़ी और छोटी विंडो के साइज़, तो ऐसे वैकल्पिक लेआउट उपलब्ध कराएं जो कॉन्फ़िगरेशन में छोटे बदलावों के हिसाब से फ़्लेक्सिबल हों. इससे टैबलेट, फ़ोन, और फ़ोल्डेबल जैसे फ़ॉर्म फ़ैक्टर पर उपयोगकर्ता अनुभव बेहतर होता है. मल्टी-विंडो मोड में विंडो का साइज़ बदलने पर भी यह काम आता है.
अलग-अलग स्क्रीन के लिए वैकल्पिक संसाधन बनाने के तरीके के बारे में जानने के लिए, स्क्रीन कंपैटबिलटी की खास जानकारी पढ़ें. साथ ही, ज़रूरत पड़ने पर, अपने ऐप्लिकेशन को कुछ स्क्रीन साइज़ तक सीमित करने के तरीके के बारे में जानने के लिए, बड़ी स्क्रीन वाले ऐप्लिकेशन की क्वालिटी से जुड़ी गाइडलाइन देखें.
कारोबार से जुड़ी वजहों से, अपने ऐप्लिकेशन की उपलब्धता को कंट्रोल करना
डिवाइस की विशेषताओं के आधार पर, अपने ऐप्लिकेशन की उपलब्धता को सीमित करने के अलावा, आपको कारोबार या कानूनी वजहों से भी अपने ऐप्लिकेशन की उपलब्धता को सीमित करना पड़ सकता है. इस तरह की स्थिति के लिए, Google Play Store, Play Console में फ़िल्टर करने के विकल्प उपलब्ध कराता है. इनकी मदद से, गैर-तकनीकी वजहों से अपने ऐप्लिकेशन की उपलब्धता को कंट्रोल किया जा सकता है. जैसे, उपयोगकर्ता का इलाका या वायरलेस कैरियर.
तकनीकी कंपैटबिलटी के लिए फ़िल्टर करना—जैसे, ज़रूरी हार्डवेयर कॉम्पोनेंट—हमेशा आपके एपीके या एएबी फ़ाइल में मौजूद जानकारी के आधार पर किया जाता है. हालांकि, गैर-तकनीकी वजहों से फ़िल्टर करना—जैसे, भौगोलिक इलाका—हमेशा Google Play Consoleमें किया जाता है.
दूसरे संसाधन:
- ऐप्लिकेशन के संसाधनों की खास जानकारी
- इस बारे में जानकारी कि Android ऐप्लिकेशन को इस तरह कैसे बनाया जाता है कि ऐप्लिकेशन के संसाधन, ऐप्लिकेशन के कोड से अलग रहें. इसमें यह भी शामिल है कि डिवाइस के खास कॉन्फ़िगरेशन के लिए, वैकल्पिक संसाधन कैसे उपलब्ध कराए जा सकते हैं.
- Google Play के लिए फ़िल्टर
- इस बारे में जानकारी कि Google Play Store, अलग-अलग डिवाइसों पर आपका ऐप्लिकेशन इंस्टॉल होने से कैसे रोक सकता है.
- Android पर अनुमतियां
- Android, अनुमति वाले सिस्टम की मदद से, कुछ एपीआई को ऐक्सेस करने से ऐप्लिकेशन को कैसे रोकता है इस सिस्टम के तहत, आपके ऐप्लिकेशन को उन एपीआई का इस्तेमाल करने के लिए, उपयोगकर्ता की सहमति की ज़रूरत होती है.