डिवाइस पर काम करने से जुड़ी खास जानकारी

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

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

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

"एक साथ काम करने की सुविधा" क्या होती है मतलब?

Android डेवलपमेंट के मामले में, दो तरह से काम किया जा सकता है: डिवाइस के साथ काम करने की सुविधा और ऐप्लिकेशन के साथ काम करने की सुविधा.

Android एक ओपन सोर्स प्रोजेक्ट है, इसलिए कोई भी हार्डवेयर मैन्युफ़ैक्चरर आपको ऐसा डिवाइस बनाना होगा जो Android ऑपरेटिंग सिस्टम पर चलता हो. हालांकि, एक डिवाइस "Android डिवाइस पर काम करता हो" वह आपके लिए लिखे गए ऐप्लिकेशन को सही ढंग से चला सके, Android एक्ज़ीक्यूशन एनवायरमेंट. Android की सटीक जानकारी एक्ज़ीक्यूशन एनवायरमेंट को Android कंपैटबिलिटी प्रोग्राम. किसी डिवाइस को इस सुविधा के साथ काम करने वाला माना जा सकता है, इसके लिए ज़रूरी है कि वह Compatibility Test Suite (CTS) को पास कर ले.

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

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

डिवाइसों पर अपने ऐप्लिकेशन की उपलब्धता को कंट्रोल करना

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

अपने ऐप्लिकेशन के लिए ज़्यादा से ज़्यादा उपयोगकर्ता हासिल करने के लिए, एक ही APK या AAB का इस्तेमाल करके, ज़्यादा से ज़्यादा डिवाइस कॉन्फ़िगरेशन के साथ काम करें. ज़्यादातर स्थितियों में, रनटाइम के दौरान, वैकल्पिक सुविधाओं को बंद करके ऐसा किया जा सकता है. ऐप्लिकेशन उपलब्ध कराना संसाधन जो अलग-अलग कॉन्फ़िगरेशन के लिए विकल्पों के साथ उपलब्ध होते हैं, जैसे कि अलग-अलग अलग-अलग स्क्रीन साइज़ के लिए लेआउट. अगर ज़रूरी हो, तो आप अपने ऐप्लिकेशन की की उपलब्धता के आधार पर, डिवाइस की विशेषताएं:

डिवाइस की सुविधाएं

डिवाइस की सुविधाओं के आधार पर, अपने ऐप्लिकेशन की उपलब्धता को मैनेज करने के लिए, 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() को इस तरह कॉल करके, यह पता लगाया जा सकता है कि कोई सुविधा उपलब्ध है या नहीं:

KotlinJava
if (!packageManager.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) {
    // This device doesn't have a compass. Turn off the compass feature.
    disableCompassFeature()
}
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 पर फ़िल्टर दस्तावेज़.

प्लेटफ़ॉर्म वर्शन

अलग-अलग डिवाइसों पर, Android प्लैटफ़ॉर्म के अलग-अलग वर्शन चल सकते हैं. जैसे, Android 12 या Android 13. प्लैटफ़ॉर्म के हर नए वर्शन में अक्सर ऐसे एपीआई जोड़े जाते हैं जो पिछले वर्शन में उपलब्ध नहीं होते. यह बताने के लिए कि कौनसे एपीआई उपलब्ध हैं, हर प्लैटफ़ॉर्म वर्शन में एक एपीआई लेवल होता है. उदाहरण के लिए, Android 12 का एपीआई लेवल 31 है और Android 13 का एपीआई लेवल 33 है.

आपको अपनी build.gradle फ़ाइल में, minSdkVersion और targetSdkVersion वैल्यू की जानकारी देनी होगी:

KotlinGroovy
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(33)
        ...
    }
}
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 33
        ...
    }
}

build.gradle फ़ाइल के बारे में ज़्यादा जानकारी के लिए, पढ़ें अपने बिल्ड को कॉन्फ़िगर करें.

Android के हर नए वर्शन में, प्लैटफ़ॉर्म के पिछले वर्शन के एपीआई का इस्तेमाल करके बनाए गए ऐप्लिकेशन काम करते हैं. इसलिए, आपका ऐप्लिकेशन, दस्तावेज़ में शामिल Android एपीआई का इस्तेमाल करते हुए, Android के आने वाले वर्शन पर काम करता है.

हालांकि, अगर आपका ऐप्लिकेशन प्लैटफ़ॉर्म के नए वर्शन में जोड़े गए एपीआई का इस्तेमाल करता है, लेकिन मुख्य फ़ंक्शन के लिए इनकी ज़रूरत नहीं है, तो रनटाइम के दौरान एपीआई लेवल की जांच करें. साथ ही, एपीआई लेवल बहुत कम होने पर, उनसे जुड़ी सुविधाओं को बेहतर तरीके से घटाएं. इस मामले में, minSdkVersion को सबसे कम वैल्यू पर सेट करें के लिए अपने ऐप्लिकेशन के मुख्य फ़ंक्शन का इस्तेमाल करें. इसके बाद, मौजूदा सिस्टम के मुख्य फ़ंक्शन से तुलना करें वर्शन, SDK_INT, कोडनेम कॉन्सटेंट में Build.VERSION_CODES जो उस एपीआई लेवल से जुड़ा हो जिसे आपको जांचना है, जैसा कि यहां दिखाया गया है उदाहरण:

KotlinJava
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()
}
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 इन वैरिएंट को ग्रुप में बांटता है, ताकि उन्हें टारगेट करना आसान हो:

  • चार सामान्य साइज़: छोटा, सामान्य, बड़ा, और बड़ा
  • कई सामान्य डेंसिटी: mdpi (मीडियम), hdpi (हाई), xhdpi (अतिरिक्त ज़्यादा), xxhdpi (एक्स्ट्रा-एक्स्ट्रा हाई), और अन्य

डिफ़ॉल्ट रूप से, आपका ऐप्लिकेशन सभी स्क्रीन साइज़ और डेंसिटी के साथ काम करता है. क्योंकि सिस्टम आपके यूज़र इंटरफ़ेस (यूआई) लेआउट और इमेज रिसॉर्स में, हर स्क्रीन के लिए ज़रूरी है. सामान्य स्क्रीन के लिए ऑप्टिमाइज़ की गई बिटमैप इमेज उपलब्ध कराएं डेंसिटी.

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

अलग-अलग स्क्रीन के लिए वैकल्पिक संसाधन बनाने और ज़रूरत पड़ने पर, अपने ऐप्लिकेशन को कुछ स्क्रीन साइज़ पर सीमित करने का तरीका जानने के लिए, स्क्रीन के साथ काम करने की सुविधा के बारे में खास जानकारी पढ़ें. साथ ही, बड़ी स्क्रीन वाले ऐप्लिकेशन की क्वालिटी से जुड़े दिशा-निर्देश देखें.

कारोबार से जुड़ी वजहों से, अपने ऐप्लिकेशन की उपलब्धता कंट्रोल करना

आपके ऐप्लिकेशन की उपलब्धता को डिवाइस के हिसाब से सीमित करने के अलावा विशेषताओं के आधार पर, आपको कारोबार के लिए अपने ऐप्लिकेशन की उपलब्धता को सीमित करना पड़ सकता है या कानूनी वजहों से निलंबित किया जा सकता है. ऐसी स्थिति में, Google Play Store Play Console में फ़िल्टर करने के विकल्प मौजूद होते हैं. इन विकल्पों की मदद से, यह कंट्रोल किया जा सकता है कि तकनीकी वजहों से उपलब्धता, जैसे कि उपयोगकर्ता की स्थान-भाषा या वायरलेस मोबाइल और इंटरनेट सेवा देने वाली कंपनी.

तकनीकी अनुकूलता के लिए फ़िल्टर करना—जैसे कि ज़रूरी हार्डवेयर घटक—हमेशा आपके APK या एएबी में मौजूद जानकारी पर आधारित होते हैं फ़ाइल से लिए जाते हैं. लेकिन गैर-तकनीकी वजहों से फ़िल्टर करना, जैसे कि भौगोलिक स्थान-भाषा—को हमेशा Google Play Console से हटा दिया जाएगा.

दूसरे संसाधन:

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