از 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
توجه داشته باشید که پیوند پویا ممکن است زمان راهاندازی برنامه شما را افزایش دهد، بهویژه اگر برنامه شما وابستگیهای زیادی داشته باشد.