وابستگی های Firebase را به صورت ایستا یا پویا پیوند دهید
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
با شروع CocoaPods 1.9.0 و Firebase 7، میتوانید انتخاب کنید که وابستگیهای Firebase شما بهعنوان چارچوبهای ثابت یا پویا ساخته شوند. توصیه می کنیم از چارچوب های ثابت استفاده کنید مگر اینکه به رفتارهای کتابخانه پویا خاصی نیاز داشته باشید.
توجه داشته باشید که کتابخانههایی که خارج از GitHub ایجاد شدهاند، فقط میتوانند به صورت ایستا حتی با CocoaPods 1.9.0 و نسخههای جدیدتر مرتبط شوند. در حال حاضر، این فهرست کتابخانه شامل AdMob ، Analytics ، Firebase ML و Performance Monitoring است. همه کانالهای توزیع دیگر، از جمله فایل فشرده، مدیریت بسته سوئیفت، و کارتاژ فقط کتابخانههای پیوندی استاتیک را ارائه میکنند.
این سند دانش کاری پیوندهای پویا و استاتیک در پلتفرمهای اپل را فرض میکند. اگر با این مفاهیم آشنا نیستید، به مستندات زیر نگاهی بیندازید:
از آنجایی که این سند به انواع پیوندهای کتابخانه مربوط می شود و نه بارگذاری بسته های منابع غیر قابل اجرا، اصطلاحات کتابخانه و چارچوب به جای یکدیگر استفاده می شوند.
پیوند استاتیک
کتابخانههایی که بهصورت ایستا پیوند داده شدهاند، در زمان ساخت در برنامه شما قابل اجرا هستند. در نتیجه، فایلهای شی موجود در کتابخانه استاتیک هنگام راهاندازی برنامه شما در آن وجود دارند و نیازی به حل شدن در زمان راهاندازی برنامه توسط پیوند دهنده پویا ندارند. در نتیجه، برنامه هایی که از پیوند استاتیک استفاده می کنند سریعتر راه اندازی می شوند. این به قیمت یک فایل اجرایی باینری / برنامه کمی بزرگتر تمام می شود، اگرچه باید توجه داشت که اندازه اجرایی بزرگتر با فقدان کتابخانه های پویای همراه جبران می شود.
میتوانید با مشخص کردن صریح پیوند در Podfile خود، پیوند استاتیک وابستگیهای Firebase را مجبور کنید:
کتابخانههای پیوندشده بهصورت پویا در بسته نرمافزاری شما جدا از فایل اجرایی اصلی برنامه ذخیره میشوند و باید در زمان راهاندازی برنامه توسط پیوند دهنده پویا بارگیری شوند. فریمورک های اپل همگی به صورت پویا به هم مرتبط هستند تا اشتراک کد بین فرآیندها را فعال کنند. به طور مشابه، می توانید از چارچوب های پویا برای به اشتراک گذاری کد بین برنامه و اهداف برنامه افزودنی خود استفاده کنید. شما نمی توانید چارچوب های پویا را بین برنامه های جداگانه به اشتراک بگذارید، حتی اگر هر دو توسط یک توسعه دهنده امضا شده باشند.
اگر می خواهید از Firebase به عنوان وابستگی یک هدف چارچوب پویا استفاده کنید، همچنین باید Firebase را به صورت پویا پیوند دهید. در غیر این صورت با تعاریف کلاس تکراری در زمان اجرا برنامه خود مواجه خواهید شد. پیوند پویا رفتار پیش فرض با use_frameworks! ، اما همچنان می توانید به صراحت پیوند پویا را در پادفایل خود مشخص کنید:
تاریخ آخرین بهروزرسانی 2025-09-03 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-09-03 بهوقت ساعت هماهنگ جهانی."],[],[],null,["\u003cbr /\u003e\n\nBeginning with CocoaPods 1.9.0 and Firebase 7, you can choose whether your\nFirebase dependencies are built as static or dynamic frameworks. We recommend\nusing static frameworks unless you require certain dynamic library behaviors.\n\nNote that libraries developed outside of GitHub can only be linked statically\neven with CocoaPods 1.9.0 and later. Currently, this library list includes\nAdMob, Analytics, Firebase ML, and Performance Monitoring. All other distribution\nchannels, including the zip file, Swift Package Manager, and Carthage provide\nstatically linked libraries only.\n\nThis document assumes a working knowledge of dynamic and static linking on\nApple platforms. If you're unfamiliar with these concepts, take a look at the\nfollowing documentation:\n\n- [Mach-O Programming Topics](//developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/MachOTopics/0-Introduction/introduction.html#//apple_ref/doc/uid/TP40001827-SW1)\n- [Dynamic Library Programming Topics](//developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/DynamicLibraries/000-Introduction/Introduction.html)\n- [Using Firebase in libraries](//github.com/firebase/firebase-ios-sdk/blob/master/docs/firebase_in_libraries.md)\n\nSince this document is concerned with the types of library linkage and not the\nloading of non-executable resource bundles, the terms *library* and *framework*\nare used interchangeably.\n\nStatic linking\n\nStatically linked libraries are bundled into your application executable at\nbuild time. As a result, the object files in the static library will be present\nin your app when it launches and do not need to be resolved at app-launch time\nby the dynamic linker. Consequently, apps using static linking will launch\nfaster. This comes at the expense of a slightly larger binary / app executable,\nalthough it should be noted that the larger executable size will be offset by\nthe lack of bundled dynamic libraries.\n\nYou can force static linking of Firebase dependencies by explicitly specifying\nthe linkage in your Podfile: \n\n # cocoapods \u003e= 1.9.0\n use_frameworks! :linkage =\u003e :static\n\n| **Note:** Swift Package Manager, Carthage, and the zip file provide statically linked libraries only.\n\nDynamic linking\n\nDynamically linked libraries are stored in your app bundle separately from your\napp's main executable, and they must be loaded at app-launch time by the dynamic\nlinker. Apple's frameworks are all linked dynamically to enable code-sharing\nbetween processes; similarly, you can use dynamic frameworks to share code\nbetween your app and extension targets. You cannot share dynamic frameworks\nbetween separate applications, even if they are both signed by the same\ndeveloper.\n\nIf you want to use Firebase as a dependency of a dynamic framework target, you\nalso need to link Firebase dynamically; otherwise you'll run into\n[duplicate class definitions](//github.com/firebase/firebase-ios-sdk/blob/master/docs/firebase_in_libraries.md)\nin your app's runtime. Dynamic linking is the default behavior with\n`use_frameworks!`, but you can still explicitly specify dynamic linkage in your\nPodfile: \n\n # cocoapods \u003e= 1.9.0\n use_frameworks! :linkage =\u003e :dynamic\n\nNote that dynamic linking may increase your app's launch time, especially if\nyour app has a lot of dependencies.\n| **Note:** Swift Package Manager, Carthage, and the zip file provide statically linked libraries only."]]