अरबों डिवाइसों के लिए डिवाइस की क्षमता

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

एक से ज़्यादा स्क्रीन साइज़ के साथ काम करना

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

डेंसिटी-इंडिपेंडेंट पिक्सल (डीपी) का इस्तेमाल करना

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

ldpi और mdpi स्क्रीन डेंसिटी पर टेक्स्ट और ग्राफ़िक की जांच करें

  • जांच करें कि आपका टेक्स्ट और ग्राफ़िक, कम और मध्यम डेनसिटी (एलडीपीआई और एमडीपीआई) वाली स्क्रीन पर सही तरीके से काम करते हों. ऐसा इसलिए, क्योंकि ये सामान्य डेनसिटी हैं. खास तौर पर, कम कीमत वाले डिवाइसों में. ऐसे टेक्स्ट पर ध्यान दें जो कम डेनसिटी वाली स्क्रीन पर साफ़ तौर पर न दिखता हो. ऐसी स्क्रीन पर, छोटे अक्षरों में दी गई जानकारी नहीं दिखती.
  • कम डेनसिटी वाली स्क्रीन वाले डिवाइसों में, हार्डवेयर की सुविधाएं कम होती हैं. यह पक्का करने के लिए कि आपका ऐप्लिकेशन इन डिवाइसों पर अच्छी तरह से काम करे, ग्राफ़िक्स प्रोसेसिंग के लोड को कम करें या हटाएं. जैसे, ऐनिमेशन और ट्रांज़िशन.
  • अलग-अलग डेंसिटी के साथ काम करने के बारे में ज़्यादा जानने के लिए, Android ट्रेनिंग में अलग-अलग डेंसिटी के साथ काम करना लेख पढ़ें.

छोटी और मीडियम स्क्रीन साइज़ पर लेआउट टेस्ट करना

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

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

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

अपने targetSdkVersion और minSdkVersion को सही तरीके से सेट करें

  • ऐप्लिकेशन को Android के सबसे नए वर्शन के लिए बनाया जाना चाहिए और उसे टारगेट करना चाहिए. इससे यह पक्का किया जा सकेगा कि: वे अलग-अलग डिवाइसों पर, सबसे नए वर्शन के हिसाब से काम करें; वे अब भी पुराने सिस्टम के साथ काम करने की सुविधा दें. एपीआई लेवल को सही तरीके से टारगेट करने के लिए, यहां सबसे सही तरीके दिए गए हैं:
    • targetSdkVersion में Android का नया वर्शन होना चाहिए. सबसे नए वर्शन को टारगेट करने से यह पक्का होता है कि Android के नए वर्शन पर चलने के दौरान, आपका ऐप्लिकेशन रनटाइम के नए व्यवहारों को इनहेरिट करता है. targetSdkVersion अपडेट करते समय, अपने ऐप्लिकेशन को Android के नए वर्शन पर ज़रूर टेस्ट करें. ऐसा इसलिए, क्योंकि इससे ऐप्लिकेशन के व्यवहार पर असर पड़ सकता है.
    • minSdkVersion इससे Android के उस वर्शन को सेट किया जाता है जिस पर ऐप्लिकेशन काम कर सकता है. minSdkVersion सेटिंग की वजह से, Android बिल्ड टूल भी नए एपीआई के गलत इस्तेमाल की जानकारी देते हैं. ऐसा इसलिए होता है, क्योंकि ये एपीआई प्लैटफ़ॉर्म के पुराने वर्शन में उपलब्ध नहीं हो सकते. ऐसा करने से, आपको पुराने सिस्टम के साथ काम करने की सुविधा को अनजाने में तोड़ने से बचाया जा सकता है.
  • Android डैशबोर्ड, अपने ऐप्लिकेशन के लिए Google Play Developer Console, और टारगेट मार्केट में इंडस्ट्री रिसर्च से सलाह लें. इससे आपको यह पता चलेगा कि टारगेट उपयोगकर्ताओं के हिसाब से, Android के किन वर्शन को टारगेट करना है.

Android सपोर्ट लाइब्रेरी का इस्तेमाल करना

  • Android Support Library का इस्तेमाल करके, यह पक्का करें कि आपका ऐप्लिकेशन ओएस के सभी वर्शन पर एक जैसा अनुभव देता हो. यह लाइब्रेरी, Android फ़्रेमवर्क एपीआई के पुराने सिस्टम के साथ काम करने वाले वर्शन उपलब्ध कराती है. साथ ही, ऐसी सुविधाएं भी उपलब्ध कराती है जो सिर्फ़ लाइब्रेरी एपीआई के ज़रिए उपलब्ध होती हैं. जैसे, AppCompatActivity और मटीरियल डिज़ाइन सपोर्ट लाइब्रेरी.
  • इसकी कुछ मुख्य बातें यहां दी गई हैं:
    • v4 और v7 सपोर्ट लाइब्रेरी: Android के पुराने वर्शन के लिए कई फ़्रेमवर्क एपीआई, जैसे कि ViewPager, ActionBar, RecyclerView, और Palette.
    • मटीरियल डिज़ाइन सपोर्ट लाइब्रेरी: आपके ऐप्लिकेशन में मटीरियल डिज़ाइन कॉम्पोनेंट और पैटर्न जोड़ने के लिए एपीआई.
    • Multidex support library: यह 65 हज़ार से ज़्यादा तरीकों वाले बड़े ऐप्लिकेशन के लिए सहायता उपलब्ध कराती है. ऐसा तब हो सकता है, जब आपका ऐप्लिकेशन कई लाइब्रेरी का इस्तेमाल कर रहा हो.
  • उपलब्ध सहायता लाइब्रेरी के बारे में ज़्यादा जानने के लिए, Android डेवलपर साइट पर Support Libraries की सुविधाएं सेक्शन देखें.

Google Play services का इस्तेमाल करना

  • Google Play services, Android प्लैटफ़ॉर्म के वर्शन से अलग, Google के बेहतरीन एपीआई उपलब्ध कराता है. Android डिवाइसों पर Google की सेवाओं का बेहतर अनुभव देने के लिए, Google Play services की सुविधाओं का इस्तेमाल करें.
  • Google Play services में काम के एपीआई भी शामिल हैं. जैसे, GcmNetworkManager. यह Android के पुराने वर्शन के लिए, Android 5.0 के JobScheduler एपीआई की ज़्यादातर सुविधाएं उपलब्ध कराता है.
  • Google Play services के अपडेट, Google Play Store अपने-आप डिस्ट्रिब्यूट करता है. साथ ही, क्लाइंट लाइब्रेरी के नए वर्शन, Android SDK Manager के ज़रिए डिलीवर किए जाते हैं.

मेमोरी का सही तरीके से इस्तेमाल करना

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

कम कीमत वाले डिवाइसों पर मेमोरी फ़ुटप्रिंट कम करना

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

लंबे समय तक चलने वाली प्रोसेस से बचें

  • लंबे समय तक चलने वाली प्रोसेस, मेमोरी में सेव रहती हैं. इससे डिवाइस की परफ़ॉर्मेंस पर असर पड़ सकता है. ज़्यादातर मामलों में, आपके ऐप्लिकेशन को किसी इवेंट के लिए चालू होना चाहिए, डेटा प्रोसेस करना चाहिए, और बंद हो जाना चाहिए. आपको Firebase Cloud Messaging (FCM) और GcmNetworkManager का इस्तेमाल करना चाहिए, ताकि बैकग्राउंड में लंबे समय तक चलने वाली सेवाओं से बचा जा सके. साथ ही, उपयोगकर्ता के डिवाइस पर मेमोरी का इस्तेमाल कम किया जा सके.

बेंचमार्क के लिए मेमोरी का इस्तेमाल

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

  • यह पता लगाएं कि क्या परफ़ॉर्मेंस से जुड़ी समस्याओं की वजह, अनचाहे गार्बेज कलेक्शन (GC) इवेंट पैटर्न हैं.
  • उन ऑब्जेक्ट टाइप की पहचान करना जिन्हें अचानक या बिना किसी वजह के असाइन किया जाता है या असाइन किया जाता रहता है.
  • पता लगाएं कि आपके कोड में समस्या कहां हो सकती है.

मेमोरी के इस्तेमाल की तुलना करने के बारे में ज़्यादा जानने के लिए, मेमोरी प्रोफ़ाइलर की मदद से हीप और ऐलोकेशन देखना लेख पढ़ें.

Android (Go वर्शन) पर चलने वाले डिवाइसों के लिए ऑप्टिमाइज़ करना

Android (Go वर्शन), कम सुविधाओं वाले ऐसे डिवाइसों के लिए ऑप्टिमाइज़ किया गया है जिनमें ≤1GB रैम हो. यह Android Oreo (Go वर्शन) से शुरू होता है. यह पक्का करने के लिए कि आपका ऐप्लिकेशन, Android (Go edition) डिवाइसों पर ठीक से काम करे, आपको इन दिशा-निर्देशों का पालन करना चाहिए:

  • targetSdkVersion Android का नया वर्शन होना चाहिए. Android (Go वर्शन) वाले डिवाइसों पर, सिर्फ़ Android Oreo (एपीआई 27 या इसके बाद का वर्शन) काम करता है.
  • ऐप्लिकेशन, 1 जीबी या इससे कम रैम वाले डिवाइसों पर आसानी से चलना चाहिए. ऊपर दिए गए मेमोरी का सही तरीके से इस्तेमाल करें में बताए गए मेमोरी ऑप्टिमाइज़ेशन के बारे में ध्यान रखें. साथ ही, Android की ज़रूरी जानकारी का इस्तेमाल करके, ऐप्लिकेशन की खराब परफ़ॉर्मेंस से जुड़ी समस्याओं की पहचान करें और उन्हें ठीक करें. जैसे, धीमी रेंडरिंग और रुका हुआ फ़्रेम.
  • ऐसा हो सकता है कि डिवाइसों पर पिक्चर में पिक्चर (पीआईपी) की सुविधा बंद हो. ऐप्लिकेशन में पीआईपी मोड का इस्तेमाल करने से पहले, यह पक्का करें कि यह मोड उपलब्ध है. इसके लिए, hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE) को कॉल करें.
  • उपयोगकर्ता के डिवाइस पर मौजूद ऐप्लिकेशन का साइज़ 40 एमबी से कम होना चाहिए.
  • ऐप्लिकेशन के RAM इस्तेमाल करने का Proportional Set Size (PSS) 90 एमबी से ज़्यादा नहीं होना चाहिए. गेम के लिए, गेम की रैम के इस्तेमाल का पीएसएस 150 एमबी से ज़्यादा नहीं होना चाहिए. पीएसएस के बारे में ज़्यादा जानने के लिए, RAM के इस्तेमाल की जांच करना गाइड देखें.
  • ऐप्लिकेशन को शुरू होने में कम से कम समय लगना चाहिए. यह समय पांच सेकंड से कम होना चाहिए.
  • SYSTEM_ALERT_WINDOW (जिससे ऐप्लिकेशन को अन्य ऐप्लिकेशन के ऊपर एक विंडो बनाने की अनुमति मिलती है) को कम रैम वाले Android Go डिवाइसों पर बंद किया जा सकता है. अन्य ऐप्लिकेशन के ऊपर दिखने से पहले, यह देखें कि आपके ऐप्लिकेशन के पास यह अनुमति है या नहीं. इसके लिए, Settings.canDrawOverlays() को कॉल करें. अगर आपका ऐप्लिकेशन अनुमति नहीं पा सकता है, तो अपने ऐप्लिकेशन को इस तरह से डिग्रेड करें कि उपयोगकर्ता आपके ऐप्लिकेशन का इस्तेमाल जारी रख सके. इसके लिए, SYSTEM_ALERT_WINDOW अनुमति की ज़रूरत वाली सुविधा को बंद किया जा सकता है.

हमारा सुझाव है कि ज़्यादातर डेवलपर अपने मौजूदा ऐप्लिकेशन को ऑप्टिमाइज़ करें. इससे वह सभी Android (Go edition) डिवाइसों पर उपलब्ध हो पाएगा. ऐसा इसलिए, क्योंकि ऐप्लिकेशन को ज़्यादा तेज़ी से और कम डेटा इस्तेमाल करके चलाने से, आपको अपने सभी दर्शकों को फ़ायदा पहुंचाने में मदद मिलेगी. Play Console पर एक से ज़्यादा APK की सुविधा का इस्तेमाल करके, Android (Go वर्शन) वाले डिवाइसों के लिए कोई खास APK डिस्ट्रिब्यूट किया जा सकता है.हालांकि, ऐसा सिर्फ़ तब करें, जब इससे उपयोगकर्ता अनुभव पर कोई असर न पड़े. उदाहरण के लिए, आपको सुविधाओं को हटाने से बचना चाहिए. Android (Go वर्शन) वाले डिवाइसों को टारगेट करने वाले APK को <uses-feature android:name="android.hardware.ram.low" android:required="true"> के बारे में बताना होगा. साथ ही, उसे कम से कम एपीआई लेवल 26 को टारगेट करना होगा. इसके अलावा, उसका वर्शन कोड, नॉन-Go वर्शन वाले APK से ज़्यादा होना चाहिए.

अन्य संसाधन

अलग-अलग डिवाइसों पर काम करने वाले ऐप्लिकेशन बनाने के बारे में ज़्यादा जानने के लिए, यह संसाधन देखें:

ब्लॉग पोस्ट