CocoaPods 1.9.0 और Firebase 7 के साथ, आप यह चुन सकते हैं कि Firebase डिपेंडेंसी को स्टैटिक या डाइनैमिक फ़्रेमवर्क के तौर पर बनाया जाता है. हमारा सुझाव है कि आप: स्टैटिक फ़्रेमवर्क का इस्तेमाल तब तक न करें, जब तक आपको कुछ डाइनैमिक लाइब्रेरी बिहेवियर की ज़रूरत न हो.
ध्यान दें कि GitHub के बाहर डेवलप की गई लाइब्रेरी को सिर्फ़ स्टैटिक तरीके से लिंक किया जा सकता है CocoaPods के 1.9.0 और इसके बाद के वर्शन पर भी. फ़िलहाल, इस लाइब्रेरी सूची में ये चीज़ें शामिल हैं: AdMob, Analytics, Firebase ML, और Performance Monitoring. अन्य सभी डिस्ट्रिब्यूशन इन चैनलों में ज़िप फ़ाइल, Swift Package Manager, और Carthage शामिल हैं लाइब्रेरी के लिए एक से ज़्यादा विकल्प दिखेंगे.
इस दस्तावेज़ में डाइनैमिक और स्टैटिक लिंकिंग के बारे में काम करने की जानकारी है Apple प्लैटफ़ॉर्म. अगर आपको इन कॉन्सेप्ट के बारे में जानकारी नहीं है, तो ये दस्तावेज़ देखें:
- Mac-O प्रोग्रामिंग के विषय
- डाइनैमिक लाइब्रेरी की प्रोग्रामिंग के विषय
- लाइब्रेरी में Firebase का इस्तेमाल करना
यह दस्तावेज़, लाइब्रेरी के लिंक किए जाने के टाइप से जुड़ा है, न कि ऐसे रिसॉर्स बंडल का लोड होना, जो इस्तेमाल नहीं किए जा सकते, लाइब्रेरी और फ़्रेमवर्क शब्द इनका इस्तेमाल एक-दूसरे की जगह पर किया जाता है.
स्टैटिक लिंकिंग
स्टैटिक तौर पर लिंक की गई लाइब्रेरी, बिल्ड के समय आपके ऐप्लिकेशन के एक्सीक्यूटेबल में बंडल की जाती हैं. इस वजह से, स्टैटिक लाइब्रेरी में मौजूद ऑब्जेक्ट फ़ाइलें मौजूद रहेंगी ऐप्लिकेशन लॉन्च होने पर, उसे ठीक करें. साथ ही, ऐप्लिकेशन लॉन्च करते समय इस समस्या को ठीक करने की ज़रूरत न हो से लिंक करती है. इस वजह से, स्टैटिक लिंकिंग का इस्तेमाल करने वाले ऐप्लिकेशन लॉन्च हो जाएंगे और तेज़ी से. हालांकि, ध्यान रखें कि बंडल की गई डाइनैमिक लाइब्रेरी न होने की वजह से, ऐप्लिकेशन के ऐक्सीक्यूटेबल का साइज़ ज़्यादा हो जाएगा.
आपके पास यह तय करने का विकल्प होता है कि Firebase डिपेंडेंसी को स्टैटिक तरीके से लिंक किया जाए या नहीं लिंकेज है:
# cocoapods >= 1.9.0
use_frameworks! :linkage => :static
डाइनैमिक लिंकिंग
डाइनैमिक रूप से लिंक की गई लाइब्रेरी को आपके ऐप्लिकेशन बंडल में, आपके ऐप्लिकेशन बंडल से अलग सेव किया जाता है और उन्हें ऐप्लिकेशन-लॉन्च के समय, डाइनैमिक लिंकर. Apple के सभी फ़्रेमवर्क, प्रोसेस के बीच कोड शेयर करने की सुविधा चालू करने के लिए डाइनैमिक तौर पर लिंक किए जाते हैं. इसी तरह, अपने ऐप्लिकेशन और एक्सटेंशन टारगेट के बीच कोड शेयर करने के लिए, डाइनैमिक फ़्रेमवर्क का इस्तेमाल किया जा सकता है. अलग-अलग ऐप्लिकेशन के बीच डाइनैमिक फ़्रेमवर्क शेयर नहीं किए जा सकते. भले ही, दोनों ऐप्लिकेशन पर एक ही डेवलपर ने हस्ताक्षर किया हो.
अगर आपको Firebase का इस्तेमाल, डाइनैमिक फ़्रेमवर्क टारगेट की डिपेंडेंसी के तौर पर करना है, तो आपको Firebase को डाइनैमिक तौर पर भी लिंक करना होगा. ऐसा न करने पर, आपको अपने ऐप्लिकेशन के रनटाइम में डुप्लीकेट क्लास डेफ़िनिशन दिखेंगी. use_frameworks!
के साथ डाइनैमिक लिंकिंग डिफ़ॉल्ट रूप से चालू होती है. हालांकि, अब भी अपनी Podfile में डाइनैमिक लिंकेज के बारे में साफ़ तौर पर बताया जा सकता है:
# cocoapods >= 1.9.0
use_frameworks! :linkage => :dynamic
ध्यान दें कि डाइनैमिक लिंकिंग से आपके ऐप्लिकेशन के लॉन्च का समय बढ़ सकता है. खास तौर पर, अगर आपके ऐप्लिकेशन की कई डिपेंडेंसी हैं.