透過靜態或動態方式連結 Firebase 依附元件

從 CocoaPods 1.9.0 和 Firebase 7 開始,您可以選擇要以靜態或動態架構建構 Firebase 依附元件。除非您需要特定動態程式庫行為,否則建議您使用靜態架構。

請注意,在 GitHub 以外開發的程式庫只能以靜態方式連結,即使與 CocoaPods 1.9.0 以上版本一樣。這個程式庫清單目前包含 AdMob、Analytics (分析)、Firebase ML 和 Performance Monitoring。所有其他發布管道 (包括 ZIP 檔案、Swift 套件管理工具和 Carthage) 都僅提供靜態連結程式庫。

本文假設您具備 Apple 平台上動態和靜態連結的相關工作知識。如果您不熟悉這些概念,請參閱下列說明文件:

由於本文件涉及程式庫連結的類型,而非載入非執行式資源組合,因此可以交替使用「library」和「framework」這兩個詞彙。

靜態連結

靜態連結程式庫會在建構時隨附於應用程式的執行檔中。因此,當應用程式啟動時,靜態程式庫中的物件檔案會顯示於應用程式中,不需要由動態連接器在啟動應用程式時進行解析。因此,使用靜態連結的應用程式會更快啟動。雖然這種做法會耗用稍微較大的二進位檔 / 應用程式執行檔,但請注意,大型可執行檔大小可能會因缺少隨附動態程式庫而抵銷。

您可以在 Podfile 中明確指定連結,強制 Firebase 依附元件的靜態連結:

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

動態連結

動態連結的程式庫會與應用程式的主要執行檔分開儲存,而且必須在應用程式啟動時由動態連結器載入。Apple 的架構都會動態連結,以便在程序之間共用程式碼。同樣地,您也可以使用動態架構,在應用程式與擴充功能目標之間共用程式碼。不同應用程式之間無法共用動態架構,即使兩者都是由同一個開發人員簽署也一樣。

如果要使用 Firebase 做為動態架構目標的依附元件,您也必須動態連結 Firebase;否則您必須在應用程式的執行階段中執行重複的類別定義。動態連結是 use_frameworks! 的預設行為,但您仍可在 Podfile 中明確指定動態連結:

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

請注意,動態連結可能會增加應用程式的啟動時間,尤其是如果應用程式有很多依附元件時更是如此。