CocoaPods 1.9.0 এবং Firebase 7 থেকে শুরু করে, আপনার Firebase ডিপেন্ডেন্সি স্ট্যাটিক নাকি ডায়নামিক ফ্রেমওয়ার্ক হিসেবে তৈরি করা হবে তা বেছে নিতে পারবেন। আমরা সাজেস্ট করি যে আপনি স্ট্যাটিক ফ্রেমওয়ার্ক ব্যবহার করুন, যদি না আপনার নির্দিষ্ট ডায়নামিক লাইব্রেরি ব্যবহারের প্রয়োজন হয়।
মনে রাখবেন, GitHub-এর বাইরে ডেভেলপ করা লাইব্রেরি শুধুমাত্র স্ট্যাটিক্যালি লিঙ্ক করা যেতে পারে এমনকি CocoaPods 1.9.0 এবং তার পরবর্তী ভার্সনের ক্ষেত্রেও। বর্তমানে, এই লাইব্রেরি তালিকায় AdMob, Analytics, Firebase ML এবং Performance Monitoring অন্তর্ভুক্ত আছে। জিপ ফাইল, Swift প্যাকেজ ম্যানেজার ও Carthage সহ অন্যান্য সব ডিস্ট্রিবিউশন চ্যানেল শুধুমাত্র স্ট্যাটিক্যালি লিঙ্ক করা লাইব্রেরি প্রদান করে।
এই ডকুমেন্টটি ধরে নেয় যে Apple প্ল্যাটফর্মে ডাইনামিক এবং স্ট্যাটিক লিঙ্কিং সম্পর্কে আপনার কার্যকরী জ্ঞান আছে। আপনি যদি এই ধারণাগুলির সাথে পরিচিত না হন, তাহলে নিম্নলিখিত ডকুমেন্টেশনটি দেখুন:
- Mach-O প্রোগ্রামিং সংক্রান্ত বিষয়
- ডায়নামিক লাইব্রেরি প্রোগ্রামিং সংক্রান্ত বিষয়
- লাইব্রেরিতে Firebase ব্যবহার করা
যেহেতু এই ডকুমেন্টটি লাইব্রেরি লিঙ্কেজের ধরন নিয়ে আলোচনা করে এবং এক্সিকিউট করা যায় না এমন রিসোর্স বান্ডেল লোড করার বিষয়ে নয়, তাই লাইব্রেরি এবং ফ্রেমওয়ার্ক শব্দগুলি একে অপরের পরিবর্তে ব্যবহার করা হয়।
স্ট্যাটিক লিঙ্কিং
স্ট্যাটিক্যালি লিঙ্ক করা লাইব্রেরিগুলি বিল্ড টাইমে আপনার অ্যাপ্লিকেশন এক্সিকিউটেবলে বান্ডিল করা হয়। এর ফলে, স্ট্যাটিক লাইব্রেরিতে থাকা অবজেক্ট ফাইলগুলি আপনার অ্যাপে উপস্থিত থাকবে যখন এটি চালু হবে এবং অ্যাপ-লঞ্চের সময় ডাইনামিক লিঙ্কার দ্বারা সমাধান করার প্রয়োজন হবে না। এর ফলে, স্ট্যাটিক লিঙ্কিং ব্যবহার করা অ্যাপ আরও দ্রুত লঞ্চ হবে। এটি কিছুটা বড় বাইনারি / অ্যাপ এক্সিকিউটেবল-এর খরচে আসে, যদিও এটি লক্ষ্য করা উচিত যে বড় এক্সিকিউটেবল সাইজটি বান্ডিল করা ডাইনামিক লাইব্রেরির অভাবের কারণে অফসেট হবে।
আপনার Podfile-এ লিঙ্কেজ স্পষ্টভাবে উল্লেখ করে আপনি Firebase ডিপেন্ডেন্সির স্ট্যাটিক লিঙ্কিং বাধ্যতামূলক করতে পারেন:
# cocoapods >= 1.9.0
use_frameworks! :linkage => :static
ডায়নামিক লিঙ্কিং
ডায়নামিকালি লিঙ্ক করা লাইব্রেরি আপনার অ্যাপ বান্ডেলে অ্যাপের মূল এক্সিকিউটেবল থেকে আলাদাভাবে স্টোর করা হয় এবং অ্যাপ লঞ্চ করার সময় ডায়নামিক লিঙ্কারকে সেগুলি লোড করতে হয়। Apple-এর ফ্রেমওয়ার্কগুলি সব ডায়নামিকভাবে লিঙ্ক করা থাকে যাতে প্রসেসের মধ্যে কোড-শেয়ারিং চালু করা যায়; একইভাবে, আপনি ডায়নামিক ফ্রেমওয়ার্ক ব্যবহার করে আপনার অ্যাপ এবং এক্সটেনশন টার্গেটের মধ্যে কোড শেয়ার করতে পারেন। আপনি আলাদা অ্যাপ্লিকেশনের মধ্যে ডায়নামিক ফ্রেমওয়ার্ক শেয়ার করতে পারবেন না, এমনকি দুটি অ্যাপ্লিকেশন একই ডেভেলপার সাইন করলেও নয়।
আপনি যদি ডায়নামিক ফ্রেমওয়ার্ক টার্গেটের ডিপেন্ডেন্সি হিসেবে Firebase ব্যবহার করতে চান, তাহলে
আপনাকে Firebase-কেও ডায়নামিকভাবে লিঙ্ক করতে হবে; অন্যথায় আপনার অ্যাপের রানটাইমে
ডুপ্লিকেট ক্লাস ডেফিনেশন
সংক্রান্ত সমস্যা দেখা দেবে। use_frameworks!-এর সাথে ডাইনামিক লিঙ্কিং হল ডিফল্ট অ্যাকশন, তবে আপনি এখনও আপনার
Podfile-এ স্পষ্টভাবে ডাইনামিক লিঙ্কেজ উল্লেখ করতে পারেন:
# cocoapods >= 1.9.0
use_frameworks! :linkage => :dynamic
মনে রাখবেন, ডায়নামিক লিঙ্কিং আপনার অ্যাপ চালু করার সময় বাড়িয়ে দিতে পারে, বিশেষ করে যদি আপনার অ্যাপ অনেক কিছুর উপর নির্ভর করে।