हर साल, Apple एक नया iPhone जारी करता है, धीरे-धीरे RAM और मुख्य मेमोरी का आकार बढ़ाता है, चिप में शक्ति जोड़ता है। आज, iPhone 15 पर, आप पहले से ही "रेजिडेंट ईविल 4" जैसे कंसोल गेम चला सकते हैं और एक तार्किक प्रश्न उठ सकता है - क्या मुझे अपने एप्लिकेशन के आकार को अनुकूलित करना चाहिए या क्या मैं इस पर अधिक समय नहीं बिता सकता?
संक्षेप में, यह अभी भी आकार को अनुकूलित करने लायक है। इस लेख में, मैंने ऐसे कारण एकत्र किए हैं कि ऐसा करना क्यों आवश्यक है और कुछ उपयोगी अनुकूलन विधियाँ प्रदान की हैं।
तो, आइए इस प्रश्न का सबसे सामान्य उत्तर "आकार क्यों मायने रखता है?" से शुरुआत करें। - ऐप स्टोर की सीमाएँ। ऐप स्टोर कनेक्ट आपको निर्दिष्ट आकार सीमा से अधिक फ़ाइल डाउनलोड करने की अनुमति नहीं देगा।
आईओएस और टीवीओएस ऐप्स के लिए, सत्यापित करें कि आपका ऐप समर्थित ऑपरेटिंग सिस्टम पर अधिकतम फ़ाइल आकार से अधिक नहीं है। आपके ऐप का कुल अनकंप्रेस्ड आकार 4GB से कम होना चाहिए।
Apple वॉच ऐप्स 75MB से कम होने चाहिए. इसके अलावा, प्रत्येक मैक-ओ निष्पादन योग्य फ़ाइल - उदाहरण के लिए, ऐप_नाम.एप/एप_नाम - इन अधिकतम फ़ाइल आकारों से अधिक नहीं होनी चाहिए।
जोड़ना
वे जिन विशिष्ट फ़ाइलों का उल्लेख कर रहे हैं वे थोड़ी भ्रमित करने वाली हो सकती हैं। इसे बेहतर ढंग से समझने के लिए, आइए ऐप स्टोर कनेक्ट पर अपना आवेदन सबमिट करने की प्रक्रिया के बारे में जानें।
पहला कदम एक संग्रह बनाना है। यह संग्रह iOS, macOS, watchOS, या tvOS ऐप के लिए बिल्ड कलाकृतियों और संबंधित जानकारी का संग्रह संग्रहीत करता है।
हमारे पास यह देखने का अवसर है कि संग्रह में वास्तव में क्या और किस रूप में शामिल है।
मुख्य फ़ाइलों में से, आप पाएंगे:
आपके ऐप के साथ उत्पाद फ़ोल्डर;
dSYMs, ("डिबगिंग सिंबल" का संक्षिप्त रूप), डिबगिंग के लिए आवश्यक जानकारी के साथ Xcode द्वारा उत्पन्न विशेष फ़ाइलें, संक्षेप में, क्रैश लॉग;
जानकारी.प्लिस्ट;
वैसे, एप्लिकेशन फ़ाइल को "पैकेज सामग्री दिखाएं" द्वारा भी खोला जा सकता है, और फ़ाइलों के बीच, आपको निष्पादन योग्य और CodeResources मिलेंगे, जो कोड हस्ताक्षर का परिणाम है; यह विभिन्न एप्लिकेशन संसाधनों (चित्र, आदि) के डिजिटल हस्ताक्षरों का ट्रैक रखता है।
Xcode पर वापस लौटने पर, आर्काइव जेनरेट करने के बाद, Distribute App
बटन आपके लिए उपलब्ध होता है। इस स्तर पर, .xcarchive .ipa में बदल जाता है।
एक .ipa फ़ाइल को एक संपीड़ित पैकेज के रूप में सोचा जा सकता है जिसमें एक "पेलोड" फ़ोल्डर शामिल होता है। इस "पेलोड" फ़ोल्डर के अंदर, आवश्यक "YourApp.app" बंडल है। ".app" बंडल के भीतर, आपको अपने एप्लिकेशन के सभी महत्वपूर्ण घटक मिलेंगे, जिनमें संसाधन भी शामिल हैं
इसके अतिरिक्त, ऐप की अखंडता और सुरक्षा सुनिश्चित करने के लिए इसमें कोड-हस्ताक्षर संसाधन मौजूद हैं।
अपने .ipa के अंदर देखने के लिए, वितरण के बाद Export
पर क्लिक करें, प्रकार को .ipa से .zip में बदलें, और बस निकालें।
संक्षेप में, .ipa फ़ाइल एक पैकेज्ड एप्लिकेशन है जिसे अंतिम-उपयोगकर्ता अपने iOS उपकरणों पर इंस्टॉल करते हैं, जबकि .xcarchive एक डेवलपर-केंद्रित संग्रह है जिसमें एप्लिकेशन के लिए विभिन्न संपत्तियां और जानकारी शामिल होती है।
.ipa का उपयोग वितरण के लिए किया जाता है, जबकि .xcarchive का उपयोग डिबगिंग, संग्रह और आगे के विकास उद्देश्यों के लिए किया जाता है। दूसरी ओर, निष्पादन योग्य, केंद्रीय कोड है जो ऐप के कार्य करता है और .ipa पैकेज में समाहित होता है।
इस प्रकार, AppStore की सीमाओं को निम्नानुसार चित्रित किया जा सकता है।
ओएस संस्करण | .आईपीए आकार | .ipa -> पेलोड -> ऐप -> exe आकार |
---|---|---|
आईओएस 9.0 और बाद में टीवीओएस 9.0 और बाद में | 4GB | 500 एमबी |
iOS 7.X से iOS 8.X तक | 2 जीबी | 60 एमबी |
हालाँकि, आपके अंतिम एप्लिकेशन के आकार का अनुमान लगाने के लिए, यानी, किसी विशेष उपयोगकर्ता को अपने डिवाइस पर कितने बाइट्स इंस्टॉल करने होंगे, आपको अतिरिक्त कार्रवाइयों की आवश्यकता होगी, अर्थात् ऐप आकार रिपोर्ट तैयार करना। दस्तावेज़ इसे बनाने की प्रक्रिया का अच्छी तरह से वर्णन करता है, इसलिए मैं इसे छोड़ दूँगा
आपके एप्लिकेशन के आकार के बारे में सोचने का अगला कारण है... ऐपस्टोर फिर से, लेकिन अब, हम सिस्टम प्रतिबंधों के बारे में नहीं बल्कि डाउनलोड गति के बारे में बात कर रहे हैं। यहां सब कुछ स्पष्ट है - आकार जितना छोटा होगा, दर उतनी ही अधिक होगी।
इसके अलावा, 200 एमबी की सीमा है, जिसे पूरा करने के लिए उपयोगकर्ताओं को ऐप इंस्टॉल करने के लिए वाई-फाई नेटवर्क से कनेक्ट करना होगा। देरी उपयोगकर्ताओं को हतोत्साहित कर सकती है और परित्याग दर को बढ़ा सकती है।
ऐप्पल का ऐप स्टोर सर्च और डिस्कवरी एल्गोरिदम अक्सर छोटे ऐप्स को पसंद करते हैं, क्योंकि उपयोगकर्ताओं के लिए उन्हें डाउनलोड करना और आज़माना आसान होता है। छोटे ऐप आकार संभावित रूप से खोज परिणामों और अनुशंसाओं में आपके ऐप की दृश्यता में सुधार कर सकते हैं।
एक बार ऐप डिवाइस पर आ जाने के बाद भी उसका आकार मायने रखता है। छोटे ऐप्स तेजी से लॉन्च होते हैं, जिससे उपयोगकर्ता को बेहतर अनुभव मिलता है। जब कोई ऐप स्टोरेज को अनुकूलित करता है, तो यह विस्तारित बैटरी जीवन, ऐप फ़ुटप्रिंट में कमी और अच्छे डिवाइस स्वास्थ्य में योगदान देता है। परिणामस्वरूप, जितने अधिक लोग iPhone से खुश होंगे, आपके पास उतने ही अधिक संभावित उपयोगकर्ता होंगे।
विकास के दौरान आपके एप्लिकेशन के आकार को अनावश्यक रूप से बढ़ाने से बचने के लिए कुछ सरल युक्तियाँ हैं। उनमें से पहला छवियों के साथ सचेत कार्य है।
सबसे पहले, JPEG के बजाय HEIC चुनें। HEIC ऐसी फ़ाइलें प्रदान करता है जो समान छवि गुणवत्ता बनाए रखते हुए JPEG की तुलना में 50 प्रतिशत छोटी होती हैं। इसके परिणामस्वरूप आपके डिवाइस पर संग्रहण स्थान कम हो जाता है। छोटी फ़ाइलों को पूरे नेटवर्क में फ़ाइलों को स्थानांतरित करना आसान होता है, साथ ही डिस्क पर लोड करना और सहेजना भी तेज़ होता है।
HEICs छवि पारदर्शिता और गहराई और असमानता की जानकारी वाली पूरक छवियों को संग्रहीत करने की क्षमता का समर्थन करते हैं। यह दोषरहित संपीड़न का समर्थन करता है और आपको एक ही कंटेनर में कई छवियों को संग्रहीत करने में सक्षम बनाता है।
दूसरे, पीडीएफ और पीएनजी के बजाय एसवीजी (द्वि-आयामी वेक्टर ग्राफिक्स प्रदर्शित करने के लिए उपयोग किया जाने वाला एक एक्सएमएल-आधारित वेक्टर छवि प्रारूप) को अपनाने का प्रयास करें। रेखापुंज छवियों के विपरीत, वेक्टर ग्राफिक्स आमतौर पर छोटे फ़ाइल आकार प्रदर्शित करते हैं, क्योंकि यह गणितीय समीकरणों की विशेषता है जो व्यक्तिगत पिक्सेल को संग्रहीत करने के विपरीत, आकृतियों और वक्रों को परिभाषित करते हैं।
प्रारंभ में, उपसर्गों (प्रत्येक पिक्सेल घनत्व के लिए) के साथ 3 छवियां जोड़ना आवश्यक था। फिर पीएनजी समर्थन जोड़ा गया (= दिए गए आकार के साथ वेक्टर छवि), लेकिन यह अभी भी "जब हम प्रोजेक्ट को इकट्ठा करते हैं तो पीडीएफ से 3 पीएनजी काटें" के स्तर पर काम करता है।
और तभी एसवीजी का उपयोग करना संभव हो गया + संपत्ति सूची में "वेक्टर दिनांक का उपयोग करें" चेकबॉक्स शामिल करें, जिससे वास्तव में उपयोग की गई छवियों का आकार कम हो गया + गुणवत्ता के नुकसान के बिना अनंत स्केलिंग की संभावना बढ़ गई।
तीसरा, एसेट कैटलॉग की क्षमताओं का अधिकतम लाभ उठाएं। एसेट कैटलॉग एक ही छवि के एकाधिक रिज़ॉल्यूशन के लिए उपयोग में आसान भंडारण प्रदान करता है। इसके अलावा, कैटलॉग सभी छवि परिसंपत्तियों को व्यक्तिगत फ़ाइलों के बजाय मेटाडेटा के साथ एक एकल अनुकूलित प्रारूप में संग्रहीत करता है।
यह ऐप स्टोर को उनके विशेष डिवाइस के लिए केवल आवश्यक संपत्तियां प्रदान करने की अनुमति देता है। इससे डाउनलोड गति बढ़ती है, और हम पहले से ही जानते हैं कि उपयोगकर्ता इंतजार करना पसंद नहीं करते हैं।
संसाधन पर "ऑन-डिमांड" सेट करना संभव है, यानी, आवश्यक होने पर ही संसाधन डिवाइस पर डाउनलोड किया जाएगा, और कुछ समय के उपयोग के बाद इसे हटा दिया जाएगा।
यह न भूलें कि आपके पास "मुक्त" छवियों - एसएफ प्रतीकों की एक विशाल सूची है। ऐप्पल लगातार पात्रों को बढ़ाने, रंगों और यहां तक कि एनिमेशन को अनुकूलित करने की क्षमता जोड़ने पर काम कर रहा है।
इसलिए, चित्रों और अन्य ग्राफिक संसाधनों के साथ, सब कुछ स्पष्ट प्रतीत होता है - हम सही प्रारूपों का उपयोग करते हैं, और संपत्तियों के माध्यम से एक कैटलॉग जोड़ते हैं। अंतिम असेंबली में बड़े संसाधनों को शामिल नहीं करने, बल्कि जरूरत पड़ने पर बस इंटरनेट से अपलोड करने का अवसर हमेशा होता है। अब, कोड और पुस्तकालयों के उपयोग के बारे में बात करते हैं।
मैं आपको शीघ्रता से लिंकिंग के बारे में याद दिलाना चाहता हूँ। इसके दो प्रकार हैं: स्थैतिक और गतिशील।
| स्थिर | गतिशील |
---|---|---|
जब लिंकिंग होती है | निर्माण समय | क्रम |
जहाँ निर्भरताएँ संग्रहीत की जाती हैं | अंतिम निष्पादन योग्य फ़ाइल में | अलग गतिशील पुस्तकालयों में |
निर्भरताएँ कैसे साझा की जाती हैं | ऐप के सभी इंस्टेंसेस द्वारा एक ही कॉपी का उपयोग किया जाता है | ऐप के प्रत्येक इंस्टेंस की अपनी प्रति होती है |
निर्भरताओं के अपडेट कैसे प्रबंधित किए जाते हैं | ऐप को दोबारा बनाएं | गतिशील लाइब्रेरी को अद्यतन करें |
इस लेख की थीम के अनुसार, निर्भरता भंडारण हमारे लिए विशेष रूप से महत्वपूर्ण है, और डायनेमिक लिंकिंग हमारी पसंदीदा लगती है।
डायनेमिक लाइब्रेरीज़ क्लाइंट ऐप्स में स्थिर रूप से लिंक नहीं होती हैं; वे निष्पादन योग्य फ़ाइल का हिस्सा नहीं बनते. इसके बजाय, डायनामिक लाइब्रेरीज़ को ऐप में लोड (और लिंक) किया जा सकता है या तो ऐप लॉन्च होने पर या उसके चलने पर।
जोड़ना
लंबी कहानी को संक्षेप में कहें तो, स्थैतिक पुस्तकालयों के स्थान पर गतिशील पुस्तकालयों को चुनने से ऐप फ़ाइल का आकार छोटा होता है और प्रारंभिक मेमोरी उपयोग कम होता है। हालाँकि, संतुलन बनाए रखना और गतिशील पुस्तकालयों के अत्यधिक उपयोग से बचना अभी भी महत्वपूर्ण है, क्योंकि इससे ऐप की शुरुआत के दौरान प्रदर्शन में देरी हो सकती है।
ऐप्पल आपके ऐप में एक मॉड्यूलर कोड बेस ( एसपीएम ) बनाने की भी सिफारिश करता है, जो उदाहरण के लिए अन्य लक्ष्यों, ऐप क्लिप्स के साथ कोड साझा करते समय उपयोगी साबित हो सकता है।
स्विफ्ट पैकेज मैनेजर आपके स्विफ्ट प्रोजेक्ट्स में निर्भरता को प्रबंधित करने का एक सुव्यवस्थित और मूल तरीका प्रदान करता है।
अपने ऐप का आकार कम करने के सबसे प्रभावी तरीकों में से एक सभी अनावश्यक फ़ाइलों को हटाना है। ये अतिरिक्त फ़ाइलें, उदाहरण के लिए, Read.me या बची हुई छवियां हो सकती हैं। वास्तव में, लेख की शुरुआत में, जहां हमने पता लगाया कि .ipa क्या है, हमने पहले ही सीख लिया था कि ऐपस्टोर में आने वाली सभी फ़ाइलों को कैसे ढूंढें: .ipa -> .zip -> ऐप -> पैकेज दिखाएं सामग्री
उन सभी संसाधनों का पता लगाएं जिनकी आपको आवश्यकता नहीं है, और बेझिझक उन्हें अपने ऐप से हटा दें ।
बस इसे अंतिम रूप देने के लिए। अभी भी कुछ महत्वपूर्ण कारण हैं जिनकी वजह से हमें अपने ऐप के आकार पर नज़र रखनी चाहिए:
और ऐप का आकार कम करने के कुछ तरीके हैं:
तो बस अपने नियमित विकास के दौरान इसके बारे में मत भूलना; हर दिन होशियार बनें 🙃