從 CocoaPods 1.9.0 和 Firebase 7 開始,可以 Firebase 依附元件則是以靜態或動態架構為基礎建構而成。建議做法 使用靜態架構,除非您需要特定動態程式庫行為。
請注意,在 GitHub 以外開發的程式庫只能以靜態方式連結 也能使用 CocoaPods 1.9.0 以上版本。這個圖書館清單目前包括 AdMob、Analytics、Firebase ML和Performance Monitoring。所有其他發布 管道,包括 ZIP 檔案、Swift 套裝方案管理工具 只有靜態連結程式庫
本文假設您對動態和靜態連結的相關工作知識 Apple 平台。如果您不熟悉這些概念,請參閱 以下文件:
由於本文件與資料庫連結的類型相關,而非 載入不可執行的資源套裝組合,名稱為 library 和 framework 可以交替使用
靜態連結
靜態連結程式庫會封裝至應用程式的執行檔,位於 建構時間因此,靜態資料庫中的物件檔案 ,且不需要在應用程式啟動期間解決相關問題 由動態連結器產生因此,使用靜態連結的應用程式也會啟動 這會產生稍微較大的二進位檔 / 應用程式可執行檔 但請注意,較大的可執行大小會 缺少封裝的動態程式庫
您可以明確指定 其中的連結:
# cocoapods >= 1.9.0
use_frameworks! :linkage => :static
動態連結
動態連結程式庫會與應用程式套件分開儲存 應用程式的主要執行檔,且必須以動態方式在應用程式啟動時載入。 連結器。Apple 的架構皆會動態連結,以啟用程式碼共用功能 程序之間同樣地,您可以使用動態架構 和應用程式額外資訊的目標之間動態架構無法共用 相互簽署 開發人員。
如要使用 Firebase 做為動態架構目標的依附元件,
也需要以動態方式連結 Firebase否則會發生
重複的類別定義
所取得的問題動態連結是
use_frameworks!
,但仍可在
Podfile:
# cocoapods >= 1.9.0
use_frameworks! :linkage => :dynamic
請注意,動態連結可能會增加應用程式的啟動時間,特別是在 有許多依附元件