अपने ऐप्लिकेशन का आकार कम करना

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

'Android ऐप्लिकेशन बंडल' के साथ अपना ऐप्लिकेशन अपलोड करना

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

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

Google Play, ऐप्लिकेशन बंडल के साथ पब्लिश किए गए ऐप्लिकेशन के लिए, कंप्रेस किए गए डाउनलोड साइज़ की सीमा 200 एमबी तय करता है. बड़े आकार 'Play Feature Delivery' और 'Play ऐसेट डिलीवरी' जैसी सुविधाओं का इस्तेमाल करके किया जा सकता है. हालांकि, अपने ऐप्लिकेशन का साइज़ बढ़ाकर इंस्टॉल की सफलता पर बुरा असर पड़ता है और अनइंस्टॉल की संख्या बढ़ती है. इसलिए, हमारा सुझाव है कि आप डाउनलोड के साइज़ को जितना हो सके उतना कम करने के लिए, इस पेज पर कुछ दिशा-निर्देश दिए गए हैं.

APK के स्ट्रक्चर को समझना

अपने ऐप्लिकेशन का साइज़ कम करने से पहले, उसके APK की बनावट को समझना ज़रूरी है. APK फ़ाइल में एक ZIP संग्रह होता है. इसमें आपके ऐप्लिकेशन में शामिल सभी फ़ाइलें होती हैं. ये फ़ाइलों में Java क्लास फ़ाइलें, संसाधन फ़ाइलें, और कंपाइल किए गए रिसॉर्स वाली फ़ाइल शामिल हैं.

किसी APK में ये डायरेक्ट्री शामिल होती हैं:

  • META-INF/: इसमें CERT.SF और CERT.RSA हस्ताक्षर हैं और MANIFEST.MF मेनिफ़ेस्ट फ़ाइल भी डाउनलोड की जा सकती है.
  • assets/: इसमें ऐप्लिकेशन की ऐसेट होती हैं, जिन्हें ऐप्लिकेशन, AssetManager ऑब्जेक्ट का इस्तेमाल करके वापस पा सकता है.
  • res/: इसमें ऐसे संसाधन शामिल हैं जिन्हें कंपाइल नहीं किया जाता resources.arsc.
  • lib/: इसमें कंपाइल किया गया कोड शामिल होता है, जो किसी सॉफ़्टवेयर लेयर की सॉफ़्टवेयर लेयर के लिए खास होता है प्रोसेसर चुनें. इस डायरेक्ट्री में, हर प्लैटफ़ॉर्म टाइप के लिए एक सबडायरेक्ट्री होती है, जैसे कि armeabi, armeabi-v7a, arm64-v8a, x86, x86_64, और mips.

किसी APK में ये फ़ाइलें भी शामिल होती हैं. सिर्फ़ AndroidManifest.xml ज़रूरी है:

  • resources.arsc: इसमें इकट्ठा किए गए संसाधन शामिल हैं. इस फ़ाइल में, res/values/ फ़ोल्डर के सभी कॉन्फ़िगरेशन का एक्सएमएल कॉन्टेंट होता है. पैकेजिंग टूल इसे एक्सट्रैक्ट करता है एक्सएमएल कॉन्टेंट, इसे बाइनरी फ़ॉर्म में कंपाइल करता है, और कॉन्टेंट को संग्रहित करता है. इस कॉन्टेंट में भाषा शामिल है स्ट्रिंग और स्टाइल के साथ-साथ उस कॉन्टेंट के पाथ को भी शामिल कर सकता है जो resources.arsc फ़ाइल, जैसे कि लेआउट फ़ाइलें और इमेज.
  • classes.dex: इसमें DEX फ़ाइल फ़ॉर्मैट में इकट्ठा की गई क्लास शामिल हैं, जिन्हें इनकी समझ है डाल्विक या एआरटी वर्चुअल मशीन के तौर पर इस्तेमाल किया जा सकता है.
  • AndroidManifest.xml: इसमें मुख्य Android मेनिफ़ेस्ट फ़ाइल शामिल है. इस फ़ाइल में ऐप्लिकेशन की पहचान फ़ाइलें, वर्शन, ऐक्सेस के अधिकार, और रेफ़रंस के तौर पर दी गई लाइब्रेरी की फ़ाइलें. फ़ाइल Android के बाइनरी एक्सएमएल फ़ॉर्मैट.

संसाधनों की संख्या और साइज़ कम करना

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

इस्तेमाल न किए गए संसाधन हटाना

lint टूल, Android Studio में शामिल एक स्टैटिक कोड विश्लेषक है. यह आपके res/ फ़ोल्डर में ऐसे संसाधनों का पता लगाता है जिनका आपके कोड में रेफ़रंस नहीं दिया गया है. जब lint टूल को ऐसे संसाधन का पता चलता है जो इस्तेमाल नहीं किया गया है प्रोजेक्ट है, तो यह मैसेज को प्रिंट करता है. इसका उदाहरण नीचे दिया गया है:

res/layout/preferences.xml: Warning: The resource R.layout.preferences appears
    to be unused [UnusedResources]

कोड में जोड़ी जाने वाली लाइब्रेरी में, इस्तेमाल न किए गए संसाधन हो सकते हैं. Gradle अपने-आप काम कर सकता है अगर इस टूल को चालू किया जाता है, तो अपनी ओर से संसाधनों को हटाया जा सकता है shrinkResources आपके ऐप्लिकेशन की build.gradle.kts फ़ाइल.

KotlinGroovy
android {
    // Other settings.

    buildTypes {
        getByName("release") {
            minifyEnabled = true
            shrinkResources = true
            proguardFiles(getDefaultProguardFile('proguard-android.txt'), "proguard-rules.pro")
        }
    }
}
android {
    // Other settings.

    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

shrinkResources का इस्तेमाल करने के लिए, कोड छोटा करने की सुविधा चालू करें. बिल्ड प्रोसेस के दौरान, R8 पहले इस्तेमाल न होने वाले कोड को हटा देता है. इसके बाद, 'Android Gradle प्लग इन', इस्तेमाल नहीं किए गए संसाधनों को हटा देता है.

कोड और रिसॉर्स को छोटा करने के बारे में ज़्यादा जानकारी के लिए, अपने ऐप्लिकेशन को छोटा करना, उलझाना, और ऑप्टिमाइज़ करना लेख पढ़ें. साथ ही, Android Studio के APK साइज़ को कम करने के अन्य तरीकों के बारे में भी जानें.

'Android Gradle प्लग इन 7.0' और इसके बाद के वर्शन में, आप ऐसे कॉन्फ़िगरेशन का एलान कर सकते हैं जो आपका ऐप्लिकेशन इस्तेमाल किया जा सकता है. Gradle, इस जानकारी को बिल्ड सिस्टम में पास करता है. इसके लिए, resourceConfigurations अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है फ़्लेवर और defaultConfig विकल्प. इसके बाद, बिल्ड सिस्टम संसाधनों को काम न करने वाले दूसरे कॉन्फ़िगरेशन को APK में दिखने से रोकें, जिससे APK का साइज़ कम हो जाए. इस सुविधा के बारे में ज़्यादा जानकारी के लिए, इस्तेमाल नहीं किए गए वैकल्पिक संसाधनों को हटाना लेख पढ़ें.

लाइब्रेरी के संसाधन का इस्तेमाल कम से कम करें

जब आप कोई Android ऐप्लिकेशन बनाते हैं, तो आप आम तौर पर अपने ऐप्लिकेशन की कई तरीकों से जांच की जा सकती है. उदाहरण के लिए, आप AndroidX का रेफ़रंस दे सकते हैं . वापस पाने के लिए, Google Play services आपके ऐप में लेख के लिए अपने आप अनुवाद की सुविधा मिलती है.

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

ऐनिमेशन वाली नेटिव इमेज को डिकोड करना

Android 12 (एपीआई लेवल 31) में, एनडीके ImageDecoder एपीआई को ऐनिमेटेड GIF और ऐनिमेटेड WebP फ़ाइल फ़ॉर्मैट का इस्तेमाल करने वाली इमेज के सभी फ़्रेम और टाइमिंग डेटा को डिकोड करने के लिए बड़ा किया गया है.

आगे बढ़ने के लिए, तीसरे पक्ष की लाइब्रेरी के बजाय ImageDecoder का इस्तेमाल करें APK का साइज़ कम करें और आने वाले समय में इसका फ़ायदा पाएं सुरक्षा और परफ़ॉर्मेंस से जुड़े अपडेट.

ImageDecoder एपीआई के बारे में ज़्यादा जानकारी के लिए, यहां जाएं: API reference और सैंपल GitHub पर.

सिर्फ़ खास डेंसिटी के साथ काम करें

Android, अलग-अलग स्क्रीन डेंसिटी के साथ काम करता है. जैसे:

  • ldpi
  • mdpi
  • tvdpi
  • hdpi
  • xhdpi
  • xxhdpi
  • xxxhdpi

हालांकि, Android पर पहले के डेंसिटी का इस्तेमाल किया जा सकता है, लेकिन आपको रास्टराइज़्ड डेंसिटी को एक्सपोर्ट करने की ज़रूरत नहीं है. हर डेंसिटी के लिए ऐसेट.

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

अगर आपके ऐप्लिकेशन को सिर्फ़ स्केल की गई इमेज की ज़रूरत है, तो आप इमेज के एक ही वैरिएंट का इस्तेमाल करके और भी ज़्यादा जगह बचा सकते हैं drawable-nodpi/ में एक इमेज. हमारा सुझाव है कि आप अपने ऐप्लिकेशन में कम से कम xxhdpi इमेज वैरिएंट शामिल करें.

स्क्रीन की डेंसिटी के बारे में ज़्यादा जानने के लिए, यहां देखें स्क्रीन का साइज़ और डेंसिटी.

ड्रॉ करने लायक ऑब्जेक्ट का इस्तेमाल करना

कुछ इमेज के लिए, स्टैटिक इमेज रिसॉर्स की ज़रूरत नहीं होती. फ़्रेमवर्क डाइनैमिक रूप से इमेज बना सकता है इस्तेमाल करते हैं. Drawable ऑब्जेक्ट—या <shape> इंच एक्सएमएल—आपके APK में बहुत कम जगह ले सकता है. इसके अलावा, एक्सएमएल Drawable ऑब्जेक्ट, एक ही रंग की इमेज बना रहे हैं जो मटीरियल डिज़ाइन के दिशा-निर्देशों का पालन करती हैं.

संसाधनों का फिर से इस्तेमाल करें

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

Android, किसी ऐसेट का रंग बदलने के लिए कई सुविधाएं देता है. इन टूल का इस्तेमाल करके android:tint और tintMode एट्रिब्यूट.

ऐसे संसाधनों को भी हटाया जा सकता है जो किसी दूसरे संसाधन के सिर्फ़ घुमाए गए वर्शन हैं. नीचे दिया गया कोड स्निपेट, इमेज के बीच में पिवट करके और उसे 180 डिग्री घुमाकर, "पसंद करें" को "नापसंद करें" में बदलने का उदाहरण देता है:

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/ic_thumb_up"
    android:pivotX="50%"
    android:pivotY="50%"
    android:fromDegrees="180" />

कोड से रेंडर करें

अपनी इमेज को प्रोसेस के हिसाब से रेंडर करके भी, APK का साइज़ कम किया जा सकता है. प्रोसीजरल रेंडरिंग जगह खाली करता है, क्योंकि अब आपके APK में इमेज फ़ाइल सेव नहीं होती.

PNG फ़ाइलों को छोटा करना

aapt टूल, बिल्ड करने की प्रोसेस के दौरान, res/drawable/ में मौजूद इमेज संसाधनों को ऑप्टिमाइज़ कर सकता है. इसके लिए, यह लॉसलेस कंप्रेसन का इस्तेमाल करता है. उदाहरण के लिए, aapt टूल, 256 से ज़्यादा रंगों वाले ट्रू-कलर PNG को कलर पैलेट वाले 8-बिट PNG में बदल सकता है. ऐसा करने से, बराबर क्वालिटी की इमेज मिलेगी, लेकिन मेमोरी फ़ुटप्रिंट कम हो जाएगा.

aapt में ये सीमाएं हैं:

  • aapt टूल, asset/ में मौजूद PNG फ़ाइलों को छोटा नहीं करता फ़ोल्डर खोलें.
  • इमेज फ़ाइलों को ऑप्टिमाइज़ करने के लिए, aapt टूल में 256 या इससे कम रंगों का इस्तेमाल करना ज़रूरी है.
  • aapt टूल, पहले से कंप्रेस की गई PNG फ़ाइलों को बड़ा कर सकता है. बचाव के लिए इसके बाद, PNG फ़ाइलों के लिए इस प्रोसेस को बंद करने के लिए, isCrunchPngs फ़्लैग का इस्तेमाल किया जा सकता है:
  • KotlinGroovy
        buildTypes.all { isCrunchPngs = false }
        
        buildTypes.all { isCrunchPngs = false }
        

PNG और JPEG फ़ाइलों को कंप्रेस करना

इन टूल का इस्तेमाल करके, इमेज क्वालिटी खोए बिना PNG फ़ाइल का साइज़ कम किया जा सकता है pngcrush, pngquant या zopflipng. ये सभी टूल PNG फ़ाइल के साइज़ को कम कर सकता है और साफ़ तौर पर दिखने वाली इमेज की क्वालिटी को बनाए रखता है.

इसमें pngcrush टूल खास तौर पर असरदार है. यह टूल, PNG फ़िल्टर और zlib (Deflate) पैरामीटर पर बार-बार काम करता है. साथ ही, इमेज को कंप्रेस करने के लिए, फ़िल्टर और पैरामीटर के हर कॉम्बिनेशन का इस्तेमाल करता है. इसके बाद, यह उस कॉन्फ़िगरेशन को चुनता है जो सबसे छोटा कंप्रेस किया गया आउटपुट देता है.

JPEG फ़ाइलों को कंप्रेस करने के लिए, packJPG और guetzli जैसे टूल का इस्तेमाल किया जा सकता है.

WebP फ़ाइल फ़ॉर्मैट का इस्तेमाल करना

PNG या JPEG फ़ाइलों के बजाय, अपनी इमेज के लिए WebP फ़ाइल फ़ॉर्मैट का भी इस्तेमाल किया जा सकता है. WebP फ़ॉर्मैट में, JPG और PNG की तरह लॉसी कंप्रेशन और ट्रांसपेरंसी की सुविधा मिलती है. साथ ही, यह JPEG या PNG की तुलना में बेहतर तरीके से इमेज को कंप्रेस कर सकता है.

Android Studio का इस्तेमाल करके, मौजूदा BMP, JPG, PNG या स्टैटिक GIF इमेज को WebP फ़ॉर्मैट में बदला जा सकता है. ज़्यादा जानकारी के लिए, WebP इमेज बनाना लेख पढ़ें.

वेक्टर ग्राफ़िक का इस्तेमाल करें

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

हालांकि, हर एक इमेज को रेंडर करने में सिस्टम को ज़्यादा समय लगता है VectorDrawable ऑब्जेक्ट और बड़ी इमेज को स्क्रीन पर दिखने में ज़्यादा समय लगता है. इसलिए, छोटी इमेज दिखाते समय ही इन वेक्टर ग्राफ़िक का इस्तेमाल करें.

VectorDrawable ऑब्जेक्ट के साथ काम करने के बारे में ज़्यादा जानने के लिए, देखें ड्रॉ करने लायक चीज़ें.

ऐनिमेशन वाली इमेज के लिए वेक्टर ग्राफ़िक का इस्तेमाल करना

फ़्रेम-दर-फ़्रेम ऐनिमेशन बनाने के लिए, AnimationDrawable का इस्तेमाल न करें. ऐसा करने के लिए, आपको ऐनिमेशन के हर फ़्रेम के लिए एक अलग बिटमैप फ़ाइल शामिल करनी होगी. इससे आपके APK का साइज़ काफ़ी बढ़ जाता है.

इसके बजाय, बनाने के लिए AnimatedVectorDrawableCompat ऐनिमेटेड वेक्टर ड्रॉबल.

नेटिव और Java कोड कम करें

आप नीचे दिए गए तरीकों का इस्तेमाल करके, अपने ब्राउज़र में Java और नेटिव कोड बेस का साइज़ कम कर सकते हैं है.

जनरेट किए गए ग़ैर-ज़रूरी कोड हटाएं

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

एनोटेशन से बचें

एक एनम, आपके ऐप्लिकेशन की classes.dex फ़ाइल में करीब 1.0 से 1.4 केबी जोड़ सकता है. जटिल सिस्टम या शेयर की गई लाइब्रेरी के लिए, ये जोड़ जल्दी इकट्ठा हो सकते हैं. अगर हो सके, तो @IntDef एनोटेशन और कोड को छोटा करने का इस्तेमाल करके, एनोटेशन हटाएं और उन्हें पूर्णांक में बदलें. इस तरह के कन्वर्ज़न में, सूची के सभी तरह के सुरक्षा फ़ायदे बनाए रहते हैं.

नेटिव बाइनरी का साइज़ कम करें

अगर आपका ऐप्लिकेशन, नेटिव कोड और Android एनडीके (NDK) का इस्तेमाल करता है, तो रिलीज़ का साइज़ भी कम किया जा सकता है अपने कोड को ऑप्टिमाइज़ करके, अपने ऐप्लिकेशन के वर्शन को बेहतर बनाएं. ये दो उपयोगी तकनीकें हैं: डीबग सिंबल और जिसमें नेटिव लाइब्रेरी को एक्सट्रैक्ट नहीं किया जा रहा है.

डीबग सिंबल हटाना

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

नेटिव लाइब्रेरी एक्सट्रैक्ट करने से बचें

अपने ऐप्लिकेशन का रिलीज़ वर्शन बनाते समय, कंप्रेस की गई .so फ़ाइलों को सेटिंग के हिसाब से APK useLegacyPackaging ऐप्लिकेशन की build.gradle.kts फ़ाइल में false को अपडेट करें. इस फ़्लैग को बंद करने पर, PackageManager को इंस्टॉलेशन के दौरान, APK से फ़ाइलों को फ़ाइल सिस्टम में कॉपी करने से रोका जा सकता है. इस तरीके से आपके ऐप्लिकेशन के अपडेट कम होंगे.

एक से ज़्यादा लीन APK बनाए रखना

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

अगर ऐप्लिकेशन को Google Play पर पब्लिश नहीं किया जा रहा है, तो अपने ऐप्लिकेशन को कई APKs में सेगमेंट किया जा सकता है, स्क्रीन साइज़ या जीपीयू टेक्सचर सपोर्ट जैसे फ़ैक्टर के आधार पर अलग-अलग किया जा सकता है.

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

ज़्यादा जानकारी के लिए, एक से ज़्यादा APK बनाना और एक से ज़्यादा APK के लिए सहायता देखें.