ربط اعتماديات Firebase بشكل ثابت أو ديناميكي

بدءًا من CocoaPods 1.9.0 وFirebase 7، يمكنك اختيار ما إذا كان يتم إنشاء تبعيات Firebase كأطر عمل ثابتة أو ديناميكية. ننصحك بما يلي: باستخدام أطر عمل ثابتة إلا إذا كنت بحاجة إلى سلوكيات ديناميكية معينة للمكتبة.

ملاحظة: لا يمكن ربط المكتبات التي تم تطويرها خارج GitHub إلا بشكل ثابت. حتى مع الإصدار 1.9.0 من CocoaPods والإصدارات الأحدث. حاليًا، تتضمن قائمة المكتبة هذه AdMob و"إحصاءات Google" وتعلُّم الآلة في Firebase ومراقبة الأداء جميع التوزيعات الأخرى بما في ذلك ملف ZIP وبرنامج Swift Package Manager وقرطاج المكتبات المرتبطة بشكل ثابت فقط.

يفترض هذا المستند معرفة عملية بالربط الديناميكي والثابت على ومنصات Apple. إذا لم تكن معتادًا على هذه المفاهيم، فألق نظرة على الوثائق التالية:

نظرًا لأن هذا المستند معني بأنواع ارتباط المكتبات وليس تحميل حِزم الموارد غير القابلة للتنفيذ والمصطلحات library وframework تستخدم بالتبادل.

الربط الثابت

يتم تجميع المكتبات المرتبطة بشكل ثابت في تطبيقك القابل للتنفيذ على وقت الإصدار. ونتيجةً لذلك، ستكون ملفات الكائنات في المكتبة الثابتة موجودة في تطبيقك عند تشغيله ولا تحتاج إلى حلّ في وقت إطلاقه بواسطة الرابط الديناميكي. وبالتالي، سيتم تشغيل التطبيقات التي تستخدم الربط الثابت. بسرعة أكبر. ويرجع ذلك إلى حساب برنامج ثنائي أو تطبيق ثنائي الحجم أكبر قليلاً قابل للتنفيذ، على الرغم من أنّه من الجدير ملاحظة أنّ الحجم الأكبر القابل للتنفيذ سيتم تعويضه عدم وجود المكتبات الديناميكية المجمّعة.

يمكنك فرض الربط الثابت لتبعيات Firebase من خلال تحديد الارتباط في Podfile:

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

الربط الديناميكي

تُخزَّن المكتبات المرتبطة ديناميكيًا في حِزمة تطبيقك بشكل منفصل عن التطبيق الرئيسي القابل للتنفيذ، ويجب تحميلها في وقت تشغيل التطبيق بواسطة . ويتم ربط جميع أطر عمل Apple ديناميكيًا لتمكين مشاركة الرموز بين العمليات؛ وبالمثل، يمكنك استخدام أطر العمل الديناميكية لمشاركة التعليمات البرمجية بين استهدافات التطبيقات والإضافات لا يمكنك مشاركة أطر العمل الديناميكية. بين تطبيقين منفصلين، حتى إذا تم التوقيع عليهما بواسطة مطور البرامج.

إذا كنت تريد استخدام Firebase كاعتمادية لاستهداف إطار عمل ديناميكي، عليك إلى ربط منصّة Firebase بشكل ديناميكي وإلا فستواجه تعريفات الفئات المكرّرة في وقت تشغيل التطبيق الربط الديناميكي هو السلوك الافتراضي مع use_frameworks!، ولكن لا يزال بإمكانك تحديد الربط الديناميكي بشكل صريح في ملف Podfile:

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

يُرجى ملاحظة أنّ الربط الديناميكي قد يزيد من وقت إطلاق تطبيقك، خاصةً إذا لتطبيقك الكثير من التبعيات.