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

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

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

ऐप्लिकेशन को Android ऐप्लिकेशन बंडल के तौर पर अपलोड करें

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

रनटाइम कोड का साइज़ कम करें

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

android {
    buildTypes {
        getByName("release") {
            isMinifyEnabled = true
            isShrinkResources = true
        }
    }
}

ग़ैर-ज़रूरी लेआउट हटाएं

इस्तेमाल नहीं किए गए लेआउट को यूज़र इंटरफ़ेस (यूआई) में छोटे-छोटे बदलावों के साथ मर्ज करें. इसके बाद, गै़र-ज़रूरी लेआउट हटाएं लेआउट का इस्तेमाल करें. साथ ही, डाइनैमिक सर्च बार में जहां भी मुमकिन हो, लेआउट और व्यू बनाएं. इससे आपको स्टैटिक ड्राइंग से बचने में मदद मिलती है टेंप्लेट बनाने और टेक्निकल ओवरहेड के बिना, दूसरे लेआउट लागू करने का विकल्प मिलता है.

कम इस्तेमाल होने वाली सुविधाओं की समीक्षा करें

ऐप्लिकेशन को खास तौर पर, Android Go वर्शन के हिसाब से ऑप्टिमाइज़ करने के लिए, उन सुविधाओं को बंद करें हर दिन के सक्रिय उपयोगकर्ता (डीएयू) वाली मेट्रिक कम हैं. इसके उदाहरणों में, जटिल ऐनिमेशन, बड़ी GIF फ़ाइलें या कोई दूसरी खूबसूरत चीज़ ऐप्लिकेशन की सफलता के लिए ज़रूरी है.

डाइनैमिक डिलीवरी का इस्तेमाल करें

Play Feature Delivery में, ऐडवांस लेवल की सुविधाओं का इस्तेमाल किया जाता है ऐप्लिकेशन बंडल की सुविधाओं की मदद से, आपके ऐप्लिकेशन की कुछ सुविधाओं को कुछ शर्तों के साथ डिलीवर किए जाते हैं या मांग पर डाउनलोड किए जाते हैं. सुविधा वाले मॉड्यूल इस्तेमाल किए जा सकते हैं कस्टम डिलीवरी के लिए. फ़ीचर मॉड्यूल का एक खास फ़ायदा यह है कि यह कस्टमाइज़ करें कि आपके ऐप्लिकेशन की विभिन्न सुविधाएं कैसे और कब डाउनलोड की जाएं Android 5.0 (एपीआई लेवल 21) या इसके बाद के वर्शन वाले डिवाइसों पर.

स्ट्रिंग का अनुवाद कम करें जिसका अनुवाद किया जा सकता है

प्रॉपर्टी को हटाने के लिए, 'Android Gradle resConfigs' प्रॉपर्टी का इस्तेमाल किया जा सकता है ऐसी अन्य संसाधन फ़ाइलें सबमिट करें जिनकी आपके ऐप्लिकेशन को ज़रूरत नहीं है. अगर आपको किसी ऐसी लाइब्रेरी जिसमें भाषा के संसाधन (जैसे कि AppCompat या Google Play) शामिल होते हैं सेवाएं), तो आपके ऐप्लिकेशन में लाइब्रेरी के लिए अनुवाद की गई सभी भाषाओं की स्ट्रिंग शामिल होती हैं मैसेज भी दिखेंगे, चाहे ऐप्लिकेशन का अनुवाद कुछ भी हो. अगर आपको सिर्फ़ यह जानना हो कि वे भाषाएं चुन सकते हैं जो आपके ऐप्लिकेशन में आधिकारिक तौर पर काम करती हैं. आपके पास उन भाषाओं को तय करने का विकल्प होता है resConfig प्रॉपर्टी का इस्तेमाल करके. भाषाओं के लिए तय नहीं किए गए संसाधन हटाया गया.

भाषा के संसाधनों को सिर्फ़ अंग्रेज़ी और फ़्रेंच में सीमित करने के लिए, defaultConfig जैसा कि नीचे दिखाया गया है:


android {
    defaultConfig {
        ...
        resConfigs "en", "fr"
    }
}

चुनिंदा अनुवाद का इस्तेमाल करें

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

उदाहरण के लिए, यूआरएल का अनुवाद करने की चिंता न करें.

<string name="car_frx_device_incompatible_sol_message">
  This device doesn\'t support Android Auto.\n
  &lt;a href="https://support.google.com/androidauto/answer/6395843"&gt;Learn more&lt;/a&gt;
</string>

आपको &lt; और &gt दिख सकते हैं, क्योंकि ये एस्केप कैरेक्टर हैं: < और >. यहां उनकी ज़रूरत होती है, क्योंकि अगर आपको <a> टैग डालना होता है, तो को <string> टैग में बदल दिया जाता है, तो Android रिसॉर्स कंपाइलर उन्हें ड्रॉप कर देता है, क्योंकि यह टैग को नहीं पहचानता है. हालांकि, इसका मतलब यह है कि आप HTML टैग और 78 भाषाओं के लिए एक यूआरएल बना सकते हैं. इसके बजाय, आप एचटीएमएल हटा सकते हैं:

<string name="car_frx_device_incompatible_sol_message">
         This device doesn\'t support Android Auto.
</string>

सामान्य डिपेंडेंसी के साथ नेटिव बाइनरी जोड़ें

अगर आपके ऐप्लिकेशन में अलग-अलग जावा नेटिव इंटरफ़ेस (जेएनआई) को लागू किया गया है तो अलग-अलग बाइनरी की संख्या बढ़ रही है. ग़ैर-ज़रूरी कॉम्पोनेंट वाले APK का साइज़. आप कई JNI बाइनरी मिला सकते हैं एक JNI बाइनरी फ़ाइल में और Java और JNI फ़ाइलों को अलग रखते हुए. इससे आपके APK का आकार बहुत नाटकीय रूप से कम हो सकता है.