স্ট্যাটিক বা ডায়নামিক উপায়ে Firebase নির্ভরতা লিঙ্ক করা

CocoaPods 1.9.0 ও Firebase 7 থেকে শুরু করে, আপনার Firebase ডিপেন্ডেন্সি স্ট্যাটিক বা ডায়নামিক ফ্রেমওয়ার্ক হিসেবে তৈরি করা হবে কিনা তা বেছে নিতে পারবেন। নির্দিষ্ট ডায়নামিক লাইব্রেরি আচরণ প্রয়োজন না হলে, আমরা স্ট্যাটিক ফ্রেমওয়ার্ক ব্যবহার করার সাজেশন দিই।

মনে রাখবেন, GitHub-এর বাইরে ডেভেলপ করা লাইব্রেরি শুধুমাত্র স্ট্যাটিক লিঙ্ক করা যেতে পারে এমনকি CocoaPods 1.9.0 এবং এর পরের যেকোনও ভার্সনের ক্ষেত্রেও। বর্তমানে, এই লাইব্রেরি তালিকায় AdMob, Analytics, Firebase ML ও Performance Monitoring অন্তর্ভুক্ত। zip ফাইল, Swift Package Manager ও Carthage সহ অন্যান্য সব ডিস্ট্রিবিউশন চ্যানেল শুধুমাত্র স্ট্যাটিক লিঙ্ক করা লাইব্রেরি প্রদান করে।

এই ডকুমেন্টে ধরে নেওয়া হয়েছে যে Apple প্ল্যাটফর্মে ডাইনামিক ও স্ট্যাটিক লিঙ্কিং সম্পর্কে আপনার কার্যকর জ্ঞান আছে। আপনি এইসব ধারণা সম্পর্কে অবগত না হলে, নিম্নলিখিত ডকুমেন্টেশন দেখুন:

এই ডকুমেন্ট যেহেতু লাইব্রেরি লিঙ্কেজের ধরন নিয়ে আলোচনা করে, তাই এতে এক্সিকিউট করা যায় না এমন রিসোর্স বান্ডেল লোড করা নিয়ে আলোচনা করা হয় না। লাইব্রেরি ও ফ্রেমওয়ার্ক শব্দ দুটি এখানে একই অর্থে ব্যবহার করা হয়েছে।

স্ট্যাটিক লিঙ্কিং

স্ট্যাটিক লিঙ্ক করা লাইব্রেরিগুলি আপনার অ্যাপ্লিকেশন এক্সিকিউটেবল ফাইলে বিল্ড টাইমে বান্ডেল করা হয়। এর ফলে, স্ট্যাটিক লাইব্রেরিতে থাকা অবজেক্ট ফাইলগুলি আপনার অ্যাপ লঞ্চ করার সময় অ্যাপে উপস্থিত থাকবে এবং ডায়নামিক লিঙ্কারকে অ্যাপ লঞ্চ করার সময় সেগুলি সমাধান করতে হবে না। এর ফলে, স্ট্যাটিক লিঙ্কিং ব্যবহার করা অ্যাপগুলি দ্রুত লঞ্চ হবে। এর ফলে বাইনারি / অ্যাপ এক্সিকিউটেবল একটু বড় হয়ে যায়, যদিও এটি মনে রাখতে হবে যে বান্ডেল করা ডায়নামিক লাইব্রেরি না থাকার কারণে বড় এক্সিকিউটেবল সাইজ অফসেট হয়ে যাবে।

আপনার Podfile-এ স্পষ্টভাবে লিঙ্কেজ নির্দিষ্ট করে Firebase ডিপেন্ডেন্সি স্ট্যাটিক লিঙ্ক করার জন্য বাধ্য করতে পারবেন:

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

ডায়নামিক লিঙ্কিং

ডায়নামিক লিঙ্ক করা লাইব্রেরি আপনার অ্যাপ বান্ডেলে, আপনার অ্যাপের মূল এক্সিকিউটেবল থেকে আলাদাভাবে স্টোর করা হয় এবং ডায়নামিক লিঙ্কারকে অ্যাপ লঞ্চ করার সময় সেগুলি লোড করতে হবে। প্রসেসগুলির মধ্যে কোড শেয়ার করার সুবিধা চালু করতে Apple-এর ফ্রেমওয়ার্কগুলি ডায়নামিক লিঙ্ক করা হয় ; একইভাবে, আপনার অ্যাপ ও এক্সটেনশন টার্গেটের মধ্যে কোড শেয়ার করতে ডায়নামিক ফ্রেমওয়ার্ক ব্যবহার করতে পারবেন। আপনি আলাদা আলাদা অ্যাপ্লিকেশনগুলির মধ্যে ডায়নামিক ফ্রেমওয়ার্ক শেয়ার করতে পারবেন না, এমনকি সেগুলি একই ডেভেলপার দ্বারা সাইন-ইন করা হলেও পারবেন না।

আপনি যদি ডায়নামিক ফ্রেমওয়ার্ক টার্গেটের উপর নির্ভরতা হিসেবে Firebase ব্যবহার করতে চান, তাহলে আপনাকে Firebase-কে ডায়নামিক লিঙ্ক করতে হবে; অন্যথায়, আপনার অ্যাপের রানটাইমে ডুপ্লিকেট ক্লাস ডেফিনিশন দেখতে পাবেন। ডায়নামিক লিঙ্কিং হল use_frameworks!-এর ডিফল্ট আচরণ, তবে আপনি এখনও নিজের Podfile-এ স্পষ্টভাবে ডায়নামিক লিঙ্কেজ নির্দিষ্ট করতে পারবেন:

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

মনে রাখবেন, ডায়নামিক লিঙ্কিং আপনার অ্যাপের লঞ্চ টাইম বাড়িয়ে দিতে পারে, বিশেষ করে যদি আপনার অ্যাপের অনেক নির্ভরতা থাকে।