با شروع CocoaPods 1.9.0 و Firebase 7، میتوانید انتخاب کنید که وابستگیهای Firebase شما بهعنوان چارچوبهای ثابت یا پویا ساخته شوند. توصیه می کنیم از چارچوب های ثابت استفاده کنید مگر اینکه به رفتارهای کتابخانه پویا خاصی نیاز داشته باشید.
توجه داشته باشید که کتابخانههایی که خارج از GitHub ایجاد شدهاند، فقط میتوانند به صورت ایستا حتی با CocoaPods 1.9.0 و نسخههای جدیدتر مرتبط شوند. در حال حاضر، این فهرست کتابخانه شامل AdMob ، Analytics ، Firebase ML و Performance Monitoring است. همه کانالهای توزیع دیگر، از جمله فایل فشرده، مدیریت بسته سوئیفت، و کارتاژ فقط کتابخانههای پیوندی استاتیک را ارائه میکنند.
این سند دانش کاری پیوندهای پویا و استاتیک در پلتفرمهای اپل را فرض میکند. اگر با این مفاهیم آشنا نیستید، به مستندات زیر نگاهی بیندازید:
از آنجایی که این سند به انواع پیوندهای کتابخانه مربوط می شود و نه بارگذاری بسته های منابع غیر قابل اجرا، اصطلاحات کتابخانه و چارچوب به جای یکدیگر استفاده می شوند.
پیوند استاتیک
کتابخانههایی که بهصورت ایستا پیوند داده شدهاند، در زمان ساخت در برنامه شما قابل اجرا هستند. در نتیجه، فایلهای شی موجود در کتابخانه استاتیک هنگام راهاندازی برنامه شما در آن وجود دارند و نیازی به حل شدن در زمان راهاندازی برنامه توسط پیوند دهنده پویا ندارند. در نتیجه، برنامه هایی که از پیوند استاتیک استفاده می کنند سریعتر راه اندازی می شوند. این به قیمت یک فایل اجرایی باینری / برنامه کمی بزرگتر تمام می شود، اگرچه باید توجه داشت که اندازه اجرایی بزرگتر با فقدان کتابخانه های پویای همراه جبران می شود.
میتوانید با مشخص کردن صریح پیوند در Podfile خود، پیوند استاتیک وابستگیهای Firebase را مجبور کنید:
# cocoapods >= 1.9.0
use_frameworks! :linkage => :static
لینک دهی پویا
کتابخانههای پیوندشده بهصورت پویا در بسته نرمافزاری شما جدا از فایل اجرایی اصلی برنامه ذخیره میشوند و باید در زمان راهاندازی برنامه توسط پیوند دهنده پویا بارگیری شوند. فریمورک های اپل همگی به صورت پویا به هم مرتبط هستند تا اشتراک کد بین فرآیندها را فعال کنند. به طور مشابه، می توانید از چارچوب های پویا برای به اشتراک گذاری کد بین برنامه و اهداف برنامه افزودنی خود استفاده کنید. شما نمی توانید چارچوب های پویا را بین برنامه های جداگانه به اشتراک بگذارید، حتی اگر هر دو توسط یک توسعه دهنده امضا شده باشند.
اگر می خواهید از Firebase به عنوان وابستگی یک هدف چارچوب پویا استفاده کنید، همچنین باید Firebase را به صورت پویا پیوند دهید. در غیر این صورت با تعاریف کلاس تکراری در زمان اجرا برنامه خود مواجه خواهید شد. پیوند پویا رفتار پیش فرض با use_frameworks!
، اما همچنان می توانید به صراحت پیوند پویا را در پادفایل خود مشخص کنید:
# cocoapods >= 1.9.0
use_frameworks! :linkage => :dynamic
توجه داشته باشید که پیوند پویا ممکن است زمان راه اندازی برنامه شما را افزایش دهد، به خصوص اگر برنامه شما وابستگی های زیادی داشته باشد.