अपने इंस्टैंट ऐप्लिकेशन का साइज़ कम करें

चेतावनी: Google Play Instant अब उपलब्ध नहीं होगा. दिसंबर 2025 से, इंस्टैंट ऐप्लिकेशन को Google Play से पब्लिश नहीं किया जा सकेगा. साथ ही, सभी Google Play services के इंस्टैंट एपीआई काम नहीं करेंगे. उपयोगकर्ताओं को अब Play के ज़रिए, किसी भी तरीके से इंस्टैंट ऐप्लिकेशन नहीं दिखाए जाएंगे.

हम यह बदलाव, डेवलपर के सुझावों के आधार पर कर रहे हैं. साथ ही, Google Play इंस्टैंट की सुविधा लॉन्च करने के बाद से, हम लगातार इस नेटवर्क को बेहतर बनाने के लिए काम कर रहे हैं.

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

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

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

कई फ़ीचर मॉड्यूल में फिर से बनाना

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

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

सबसे सही तरीके

अपने ऐप्लिकेशन को रीफ़ैक्टर करते समय, इन सबसे सही तरीकों को ध्यान में रखें:

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

ऐप्लिकेशन के रिसॉर्स अपडेट करना

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

इमेज का फ़ाइल साइज़ कम करना

PNG के बजाय WebP फ़ाइल फ़ॉर्मैट का इस्तेमाल करके, अपने ऐप्लिकेशन के ड्रॉबल का कुल साइज़ काफ़ी कम किया जा सकता है. Google Play Instant, WebP फ़ॉर्मैट के साथ पूरी तरह से काम करता है. इसमें पारदर्शिता और लॉसलेस कंप्रेसन की सुविधा भी शामिल है, ताकि इमेज की क्वालिटी में कोई बदलाव न हो.

में सेव करते हैं.

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

इस्तेमाल न की गई भाषाएं हटाना

अगर आपका ऐप्लिकेशन एक से ज़्यादा भाषाओं में काम करता है, तो स्थानीय भाषा में उपलब्ध ज़्यादा से ज़्यादा संसाधनों को कम करें. यह चरण खास तौर पर तब पूरा करना ज़रूरी होता है, जब android.support.v7.appcompat जैसी "app compat" लाइब्रेरी का इस्तेमाल किया जाता है. इस लाइब्रेरी में कई भाषाओं के मैसेज शामिल हैं. ऐसा हो सकता है कि आपके ऐप्लिकेशन में इनमें से कुछ भाषाओं के मैसेज काम न करें.

ज़्यादा जानने के लिए, इस्तेमाल न किए गए वैकल्पिक संसाधनों को हटाने का तरीका देखें. खास तौर पर, इस्तेमाल न की गई भाषाओं को हटाने का तरीका.

अतिरिक्त फ़ाइलें हटाना

ऐसा हो सकता है कि आपका ऐप्लिकेशन, प्रोजेक्ट में इंपोर्ट किए गए कुछ संसाधनों का इस्तेमाल न कर पाए. इन संसाधनों को हटाने में मदद करने के लिए, Android Studio में इस खास स्थिति के लिए Lint जांच की सुविधा है. टूल का इस्तेमाल करने के लिए, यह तरीका अपनाएं:

  1. Control+Alt+Shift+I दबाएं. Mac OS पर, Command+Alt+Shift+I दबाएं.
  2. इसके बाद, दिखने वाले डायलॉग बॉक्स में "unused resources" टाइप करें.
  3. संसाधन के इस्तेमाल की जांच की प्रोसेस शुरू करने के लिए, इस्तेमाल नहीं किए गए संसाधन विकल्प चुनें.

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

इस्तेमाल न की गई लाइब्रेरी हटाना

जैसे-जैसे किसी ऐप्लिकेशन का स्कोप बढ़ता है, उसमें कई तरह की डिपेंडेंसी शामिल हो सकती हैं. इनमें से सबसे ज़्यादा इनमें से कोई एक डिपेंडेंसी शामिल होती है:

  • नेटिव लाइब्रेरी: ऐसी लाइब्रेरी जिनमें नेटिव कोड होता है, जो आपके इंस्टैंट ऐप्लिकेशन में कभी नहीं चलता.
  • ट्रांज़िटिव डिपेंडेंसी: ऐसी लाइब्रेरी जिन पर आपके ऐप्लिकेशन की इंपोर्ट की गई लाइब्रेरी निर्भर करती हैं.

Android Studio में कई काम के टूल मौजूद हैं. इनकी मदद से, अपने ऐप्लिकेशन के प्रोजेक्ट में मौजूद ग़ैर-ज़रूरी डिपेंडेंसी की पहचान की जा सकती है:

बाहरी लाइब्रेरी

Android Studio के प्रोजेक्ट व्यू में, बाहरी लाइब्रेरी सेक्शन शामिल होता है.

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

APK ऐनालाइज़र

APK विश्लेषक टूल का इस्तेमाल करके, अलग-अलग बिल्ड की तुलना की जा सकती है. इनमें झटपट ऐप्लिकेशन के बिल्ड भी शामिल हैं.

यह तय करने के बाद कि आपके ऐप्लिकेशन को किन लाइब्रेरी की ज़रूरत नहीं है, उन्हें बाहर रखें. इसके लिए, अपनी Gradle बिल्ड फ़ाइल में इस तरह की लाइनें जोड़ें:

<feature_module>/build.gradle

Groovy

dependencies {
    implementation('some-important-but-large-library') {
        exclude group: 'com.example.imgtools', module: 'native'
    }
}

Kotlin

dependencies {
    implementation('some-important-but-large-library') {
        exclude(group = "com.example.imgtools", module = "native")
    }
}

अपने ऐप्लिकेशन की डिपेंडेंसी के इंपोर्ट साइज़ को कम करने के बारे में ज़्यादा जानने के लिए, Gradle की डिपेंडेंसी मैनेजमेंट गाइड देखें.

ऐसेट की क्लाउड डिलीवरी लागू करना

अगर आपको साइज़ को और कम करना है, तो आपको ऐसेट की क्लाउड डिलीवरी पर भरोसा करना पड़ सकता है.