Firebase निर्भरता को स्थिर या गतिशील रूप से लिंक करें

CocoaPods 1.9.0 और Firebase 7 से शुरुआत करके, आप चुन सकते हैं कि आपकी Firebase निर्भरताएँ स्थिर या गतिशील ढाँचे के रूप में बनाई गई हैं या नहीं। जब तक आपको कुछ गतिशील लाइब्रेरी व्यवहारों की आवश्यकता न हो, हम स्थैतिक फ़्रेमवर्क का उपयोग करने की सलाह देते हैं।

ध्यान दें कि GitHub के बाहर विकसित लाइब्रेरीज़ को केवल CocoaPods 1.9.0 और बाद के संस्करण के साथ भी सांख्यिकीय रूप से जोड़ा जा सकता है। वर्तमान में, इस लाइब्रेरी सूची में AdMob, Analytics, Firebase ML और प्रदर्शन मॉनिटरिंग शामिल हैं। ज़िप फ़ाइल, स्विफ्ट पैकेज मैनेजर और कार्थेज सहित अन्य सभी वितरण चैनल केवल स्थिर रूप से जुड़े हुए पुस्तकालय प्रदान करते हैं।

यह दस्तावेज़ Apple प्लेटफ़ॉर्म पर गतिशील और स्थैतिक लिंकिंग का कार्यसाधक ज्ञान मानता है। यदि आप इन अवधारणाओं से अपरिचित हैं, तो निम्नलिखित दस्तावेज़ पर एक नज़र डालें:

चूँकि यह दस्तावेज़ लाइब्रेरी लिंकेज के प्रकारों से संबंधित है, न कि गैर-निष्पादन योग्य संसाधन बंडलों की लोडिंग से, इसलिए लाइब्रेरी और फ्रेमवर्क शब्दों का परस्पर उपयोग किया जाता है।

स्टेटिक लिंकिंग

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

आप अपने पॉडफ़ाइल में लिंकेज को स्पष्ट रूप से निर्दिष्ट करके फ़ायरबेस निर्भरता की स्थिर लिंकिंग को बाध्य कर सकते हैं:

# cocoapods >= 1.9.0
use_frameworks! :linkage => :static

गतिशील लिंकिंग

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

यदि आप फ़ायरबेस को गतिशील फ़्रेमवर्क लक्ष्य की निर्भरता के रूप में उपयोग करना चाहते हैं, तो आपको फ़ायरबेस को गतिशील रूप से लिंक करने की भी आवश्यकता है; अन्यथा आपको अपने ऐप के रनटाइम में डुप्लिकेट क्लास परिभाषाओं का सामना करना पड़ेगा। डायनामिक लिंकिंग use_frameworks! , लेकिन आप अभी भी अपने पॉडफ़ाइल में स्पष्ट रूप से डायनामिक लिंकेज निर्दिष्ट कर सकते हैं:

# cocoapods >= 1.9.0
use_frameworks! :linkage => :dynamic

ध्यान दें कि डायनामिक लिंकिंग से आपके ऐप का लॉन्च समय बढ़ सकता है, खासकर यदि आपके ऐप पर बहुत अधिक निर्भरताएँ हैं।