Firebase डिपेंडेंसी को स्टैटिक या डाइनैमिक तरीके से लिंक करें

CocoaPods 1.9.0 और Firebase 7 के साथ, आप यह चुन सकते हैं कि Firebase डिपेंडेंसी को स्टैटिक या डाइनैमिक फ़्रेमवर्क के तौर पर बनाया जाता है. हमारा सुझाव है कि आप: स्टैटिक फ़्रेमवर्क का इस्तेमाल तब तक न करें, जब तक आपको कुछ डाइनैमिक लाइब्रेरी बिहेवियर की ज़रूरत न हो.

ध्यान दें कि GitHub के बाहर डेवलप की गई लाइब्रेरी को सिर्फ़ स्टैटिक तरीके से लिंक किया जा सकता है CocoaPods के 1.9.0 और इसके बाद के वर्शन पर भी. फ़िलहाल, इस लाइब्रेरी सूची में ये चीज़ें शामिल हैं: AdMob, Analytics, Firebase एमएल, और परफ़ॉर्मेंस मॉनिटर करने से जुड़ी सुविधाएं. अन्य सभी डिस्ट्रिब्यूशन इन चैनलों में ZIP फ़ाइल, Swift Package Manager, और Carthage शामिल हैं लाइब्रेरी के लिए एक से ज़्यादा विकल्प दिखेंगे.

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

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

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

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

आपके पास यह तय करने का विकल्प होता है कि Firebase डिपेंडेंसी को स्टैटिक तरीके से लिंक किया जाए या नहीं लिंकेज है:

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

डाइनैमिक लिंकिंग

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

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

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

ध्यान दें कि डाइनैमिक लिंकिंग से आपके ऐप्लिकेशन के लॉन्च का समय बढ़ सकता है. खास तौर पर, अगर आपके ऐप्लिकेशन की कई डिपेंडेंसी हैं.