App Size Optimization — तकनीकों का एक समूह जिसका उद्देश्य कार्यक्षमता खोए बिना इंस्टॉलेशन फ़ाइल (APK, AAB, IPA) के आकार को कम करना है। Android Reduce APK Size Guide के अनुसार, आकार में प्रत्येक मेगाबाइट की कमी धीमे इंटरनेट वाले क्षेत्रों में इंस्टॉलेशन कन्वर्ज़न को 1–2% तक बढ़ा सकती है। App Thinning — Apple की प्रमुख तकनीक जो केवल उन संसाधनों को वितरित करती है जिनकी किसी विशिष्ट डिवाइस को आवश्यकता होती है।
मुख्य बातें
App Size Optimization मोबाइल डेवलपमेंट की एक शाखा है जिसका उद्देश्य ऐप्लिकेशन इंस्टॉलेशन पैकेज के आकार को न्यूनतम करना है। इसमें मृत कोड और संसाधनों को हटाना, इमेज को संपीड़ित करना, लाइब्रेरी को अनुकूलित करना, विभिन्न आर्किटेक्चर के लिए बिल्ड विभाजन और ऑन-डिमांड डिलीवरी तकनीकों का उपयोग शामिल है।
ऐप्लिकेशन का आकार असमान रूप से प्रभावित करता है विभिन्न उपयोगकर्ता वर्गों को। विकसित मोबाइल बुनियादी ढांचे वाले क्षेत्रों (यूएसए, यूरोप, जापान) में 50 और 100 MB के बीच का अंतर अदृश्य हो सकता है। विकासशील क्षेत्रों (भारत, इंडोनेशिया, ब्राज़ील) में प्रत्येक अतिरिक्त मेगाबाइट डेटा प्लान सीमाओं और मोबाइल इंटरनेट गति के कारण इंस्टॉलेशन कन्वर्ज़न को कम करता है। Google Play APK आकार को 200 MB तक सीमित करता है, लेकिन इसे 100 MB से नीचे रखने की अनुशंसा करता है।
iOS App Store के लिए, सेल्युलर नेटवर्क पर अधिकतम डाउनलोड आकार 200 MB है (2023 से पहले 150 MB था)। यदि IPA इस सीमा से अधिक है, तो उपयोगकर्ता केवल Wi-Fi के माध्यम से ऐप इंस्टॉल कर सकता है। Apple App Thinning का भी समर्थन करता है, जिसमें Slicing, Bitcode और On-Demand Resources शामिल हैं — ऐसी तकनीकें जो डेवलपर की भागीदारी के बिना किसी विशिष्ट डिवाइस पर इंस्टॉलेशन आकार को स्वचालित रूप से कम करती हैं।
ऐप का आकार न केवल इंस्टॉलेशन कन्वर्ज़न को प्रभावित करता है, बल्कि रिटेंशन, अपडेट आवृत्ति और पहले लॉन्च की गति को भी प्रभावित करता है। प्रत्येक अतिरिक्त मेगाबाइट उपयोगकर्ता और आपके उत्पाद के उपयोग के बीच एक बाधा है।
Google I/O 2024 के आंकड़ों के अनुसार, APK को 10 MB कम करने से इंस्टॉलेशन कन्वर्ज़न औसतन 3.5% बढ़ जाता है। 150+ MB आकार वाले ऐप्स के लिए, कन्वर्ज़न 50 MB आकार वाले समान वर्ग के ऐप्स की तुलना में 20–30% कम हो सकता है। यह प्रभाव Google Play में विशेष रूप से स्पष्ट है, जहां उपयोगकर्ता इंस्टॉलेशन से पहले आकार देखता है। App Store में, आकार ऐप पेज पर दिखाया जाता है, और सीमित डेटा प्लान वाले उपयोगकर्ता इंस्टॉलेशन को स्थगित कर देते हैं, जिसके बाद वे अक्सर ऐप के बारे में भूल जाते हैं।
बड़े ऐप्स कम बार ओवर-द-एयर अपडेट होते हैं — उपयोगकर्ता पैच डाउनलोड करना Wi-Fi पर टाल देते हैं, जिससे महत्वपूर्ण सुरक्षा सुधार छूट जाते हैं। Google Play Incremental Updates (10 MB तक के पैच) की अनुमति देता है, लेकिन पूर्ण पुनर्स्थापना अभी भी पूरा APK या AAB डाउनलोड करती है। Apple App Store Delta Updates का उपयोग करता है, जो केवल बदली गई फ़ाइलों को स्थानांतरित करता है, लेकिन संसाधनों में बदलाव होने पर डेल्टा भी महत्वपूर्ण हो सकता है।
आकार सीधे पहले लॉन्च के समय को प्रभावित करता है: ऐप को संसाधनों को अनपैक करना, कोड संकलित करना (Android) या कैश साइन करना (iOS) होता है। 200 MB का ऐप औसत डिवाइस पर 50 MB के ऐप की तुलना में 10–15 सेकंड धीमा लॉन्च हो सकता है। यह ऑनबोर्डिंग अनुभव को खराब करता है — उपयोगकर्ता लोड होने की प्रतीक्षा किए बिना ऐप बंद कर सकता है।
| आकार | डाउनलोड समय (3G) | पहला लॉन्च समय |
|---|---|---|
| 30 MB | ~20 सेकंड | 3–5 सेकंड |
| 100 MB | ~70 सेकंड | 5–8 सेकंड |
| 200 MB | ~140 सेकंड | 10–15 सेकंड |
संसाधन — इमेज, फ़ॉन्ट, ध्वनियाँ, वीडियो — एक सामान्य मोबाइल ऐप के आकार का 60–80% बनाते हैं। संसाधन अनुकूलन न्यूनतम प्रयास के साथ सबसे बड़ा लाभ देता है। मुख्य दिशाएँ हैं: संपीड़न, डुप्लिकेट और अप्रयुक्त एसेट हटाना, सही प्रारूप चुनना।
WebP — Google का एक इमेज प्रारूप जो समान दृश्य गुणवत्ता पर PNG से 25–35% बेहतर और JPEG से 15–20% बेहतर संपीड़न प्रदान करता है। Android API 18 से WebP को मूल रूप से समर्थन करता है। iOS के लिए, WebP को SDWebImage या Kingfisher लाइब्रेरी के माध्यम से समर्थित किया जाता है, और iOS 17 से मूल समर्थन आया। AVIF — एक अधिक आधुनिक प्रारूप जो WebP की तुलना में अतिरिक्त 10–15% बचत देता है, लेकिन धीमी डिकोडिंग के साथ।
अप्रयुक्त संसाधनों को हटाना — आकार कम करने का सबसे सरल तरीका। Android में, Android Studio के साथ रीफ़ैक्टरिंग का उपयोग करें: Analyze → Run Inspection → Unused Resources। iOS में — Build Settings → Remove Unused Resources। अक्सर प्रोजेक्ट में पुराने संस्करणों के स्प्राइट, पुराने आइकन, अप्रयुक्त लॉन्च स्क्रीन इमेज रह जाती हैं जो बिना किसी कार्यात्मक भार के आकार को बढ़ा देती हैं।
| प्रारूप | PNG की तुलना में संपीड़न | समर्थन |
|---|---|---|
| PNG | — | सभी प्लेटफ़ॉर्म |
| WebP | 25–35% | Android मूल रूप से, iOS लाइब्रेरी के माध्यम से |
| AVIF | 35–45% | Android 12+, iOS 17+ |
| JPEG XR | 30–40% | केवल Windows |
कस्टम फ़ॉन्ट 5–15 MB तक ले सकते हैं, खासकर यदि संपूर्ण टाइपफ़ेस शामिल है (सभी शैलियाँ: Regular, Bold, Italic, BoldItalic)। केवल आवश्यक शैलियों और वर्ण उपसमूहों का उपयोग करें subsetting के माध्यम से — ऐप द्वारा समर्थित नहीं भाषाओं के ग्लिफ़ हटाना। Google Fonts और Transfonter जैसी सेवाएँ न्यूनतम वर्ण सेट बनाने की अनुमति देती हैं। ऑडियो के लिए, WAV और असंपीड़ित प्रारूपों के बजाय AAC/HE-AAC का उपयोग करें — गुणवत्ता हानि के बिना 90% तक की बचत।
कोड ऐप आकार का 20–40% बनाता है, लेकिन इसका अनुकूलन संसाधनों की तुलना में अधिक जटिल है क्योंकि इसमें निर्भरता विश्लेषण, ऑबफ़स्केशन और कार्यक्षमता को तोड़ने के जोखिम के बिना मृत कोड हटाना शामिल है।
ProGuard Android के लिए एक उपकरण है जो कोड ऑबफ़स्केशन, मिनिफ़िकेशन और अनुकूलन करता है। R8 — इसका उत्तराधिकारी, Android Gradle Plugin में निर्मित, तेज़ और अधिक कुशलता से काम करता है। R8 अप्रयुक्त क्लास और विधियों को हटाता है, चर नामों को छोटा करता है, और निर्देशों की संख्या कम करने के लिए कोड को फिर से लिखता है। R8 के साथ DEX फ़ाइल आकार में विशिष्ट कमी 30–50% है।
// build.gradle — मिनिफ़िकेशन के लिए R8 कॉन्फ़िगरेशन
android {
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile(
'proguard-android-optimize.txt')
shrinkResources true
}
}
}
लाइब्रेरी — बढ़े हुए आकार का एक सामान्य कारण। एक लाइब्रेरी ट्रांज़िटिव निर्भरताएँ खींच सकती है जो ऐप को प्रत्यक्ष लाभ पहुँचाए बिना आकार को 5–20 MB तक बढ़ा देती हैं। स्पष्ट निर्भरता घोषणा के साथ Android के लिए Gradle Version Catalog और iOS के लिए Swift Package Manager का उपयोग करें। Android Studio में Build Analyzer या Xcode Build Timeline का उपयोग करके आकार का विश्लेषण करें। भारी लाइब्रेरी को हल्के विकल्पों से बदलें: उदाहरण के लिए, Apache HTTP (15 MB) के बजाय OkHttp (3 MB)।
Dead Code Stripping — Xcode में लिंकिंग चरण में अप्रयुक्त विधियों और क्लास का स्वचालित निष्कासन। Build Settings → Dead Code Stripping = YES के माध्यम से सक्षम किया जाता है। Bitcode — एक मध्यवर्ती प्रतिनिधित्व जिसे Apple विभिन्न आर्किटेक्चर के लिए पुनः संकलित कर सकता है, अप्रयुक्त फ़ंक्शन हटाता है। हालांकि, Xcode 14 के बाद से Bitcode वैकल्पिक हो गया है, और आकार कम करने में इसका योगदान Objective-C प्रोजेक्ट के लिए 5–15% और Swift के लिए कम है।
App Thinning — Apple की तकनीक जो केवल किसी विशिष्ट डिवाइस के लिए आवश्यक संसाधनों को वितरित करके इंस्टॉल किए गए ऐप के आकार को स्वचालित रूप से कम करती है। इसमें तीन घटक शामिल हैं: Slicing, On-Demand Resources और Bitcode। Android में, समकक्ष Dynamic Delivery के साथ Android App Bundle (AAB) है।
AAB — Google Play पर एक प्रकाशन प्रारूप जहाँ स्टोर प्रत्येक डिवाइस के लिए अलग से APK जनरेट करता है, जिसमें केवल उसके आर्किटेक्चर (armeabi-v7a, arm64-v8a), स्क्रीन डेंसिटी (mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi) और भाषाओं के संसाधन शामिल होते हैं। सार्वभौमिक APK से AAB पर स्विच करने पर इंस्टॉलेशन आकार में विशिष्ट कमी 20–40% है। Play Feature Delivery मांग पर मॉड्यूल लोड करने की अनुमति देता है, जबकि Install-time मॉड्यूल बेस इंस्टॉलेशन में शामिल होते हैं।
// build.gradle — AAB और Dynamic Features कॉन्फ़िगरेशन
android {
bundle {
language {
enableSplit = true
}
density {
enableSplit = true
}
abi {
enableSplit = true
}
}
}
On-Demand Resources (ODR) — एक iOS तंत्र जहाँ संसाधन (गेम स्तर, उच्च-रिज़ॉल्यूशन इमेज, वीडियो) Apple के सर्वर से तभी डाउनलोड किए जाते हैं जब उपयोगकर्ता को वास्तव में उनकी आवश्यकता होती है। प्रारंभिक इंस्टॉलेशन आकार को 50–80% तक कम किया जा सकता है। संसाधन तीन श्रेणियों में विभाजित हैं: Initial Install Tags (इंस्टॉलेशन के दौरान डाउनलोड), Prefetched Tag Order (इंस्टॉलेशन के बाद पृष्ठभूमि में डाउनलोड), और On-Demand (केवल अनुरोध पर डाउनलोड)। Apple ODR का उपयोग सामग्री के लिए अनुशंसा करता है जो पहली स्क्रीन पर आवश्यक नहीं है: गेम स्तर, अतिरिक्त सामग्री, वीडियो ट्यूटोरियल।
SwiftUI Bundle.module विशेषता के माध्यम से ODR का समर्थन करता है, जबकि UIKit NSBundleResourceRequest का उपयोग करता है। Unity और Unreal Engine पर गेम के लिए, ODR मूल रैपर स्तर पर एकीकृत होता है। मुख्य सीमा यह है कि ODR संसाधन सिस्टम द्वारा स्थान कम होने पर हटा दिए जाते हैं, इसलिए महत्वपूर्ण डेटा को मुख्य बिल्ड में शामिल किया जाना चाहिए।
अक्सर पूछे जाने वाले प्रश्न
50 MB से कम — अधिकतम इंस्टॉलेशन कन्वर्ज़न के लिए आदर्श आकार। 50–100 MB — अधिकांश ऐप्लिकेशन के लिए स्वीकार्य। 100 MB से अधिक — आकार द्वारा औचित्य की आवश्यकता है (गेम, ऑफ़लाइन मानचित्र, सामग्री संपादक)।
संसाधन कम समय में अधिक लाभ देते हैं। अप्रयुक्त एसेट हटाकर, PNG को WebP में बदलकर और ऑडियो संपीड़ित करके शुरू करें। फिर R8 या Dead Code Stripping के माध्यम से कोड अनुकूलन पर जाएँ।
Google Play केवल विशिष्ट डिवाइस के लिए APK जनरेट करता है: arm64-v8a कोड, xhdpi संसाधन, आवश्यक भाषा। एक सार्वभौमिक APK में सभी वेरिएंट एक साथ होते हैं, जिससे आकार 1.5–2 गुना बढ़ जाता है। AAB इस समस्या को स्टोर स्तर पर हल करता है।
अप्रत्यक्ष रूप से। बड़े आकार का मतलब JIT/AOT संकलन के लिए अधिक कोड, मेमोरी में लोड करने के लिए अधिक संसाधन और मेनिफ़ेस्ट पार्स करने में अधिक समय है। हालांकि, रनटाइम प्रदर्शन पर प्रत्यक्ष प्रभाव न्यूनतम है — आकार इंस्टॉलेशन और पहले लॉन्च को प्रभावित करता है।
Install-time — बेस इंस्टॉलेशन का हिस्सा, तुरंत उपलब्ध। On-Demand — पहली एक्सेस पर लोड होता है, प्रारंभिक इंस्टॉलेशन में शामिल नहीं। On-Demand का उपयोग उन सुविधाओं के लिए करें जिनकी 20% से कम उपयोगकर्ताओं को आवश्यकता है: डायग्नोस्टिक्स, ट्यूटोरियल, AR फ़िल्टर।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें