靜態或動態鏈接 Firebase 依賴項

從 CocoaPods 1.9.0 和 Firebase 7 開始,您可以選擇將 Firebase 依賴項建置為靜態框架還是動態框架。我們建議使用靜態框架,除非您需要某些動態程式庫行為。

請注意,即使使用 CocoaPods 1.9.0 及更高版本,在 GitHub 外部開發的程式庫也只能靜態連結。目前,此庫清單包括 AdMob、Analytics、Firebase ML 和 Performance Monitoring。所有其他分發管道,包括 zip 檔案、Swift Package Manager 和 Carthage 僅提供靜態連結庫。

本文檔假定您具備 Apple 平台上的動態和靜態連結的應用知識。如果您不熟悉這些概念,請查看以下文件:

由於本文檔涉及庫連結的類型而不是非可執行資源包的加載,因此術語「庫」「框架」可以互換使用。

靜態連結

靜態連結庫在建置時會捆綁到您的應用程式可執行檔中。因此,靜態庫中的目標檔案將在應用程式啟動時出現在應用程式中,並且不需要在應用程式啟動時由動態連結器解析。因此,使用靜態連結的應用程式啟動速度會更快。這是以稍大的二進位/應用程式可執行檔為代價的,儘管應該注意的是,較大的可執行檔大小將因缺乏捆綁的動態庫而被抵消。

您可以透過在 Podfile 中明確指定連結來強制 Firebase 依賴項的靜態連結:

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

動態連結

動態連結庫與應用程式的主可執行檔分開儲存在應用程式包中,並且它們必須在應用程式啟動時由動態連結器載入。蘋果的框架都是動態連結的,以實現進程之間的程式碼共享;同樣,您可以使用動態框架在應用程式和擴充目標之間共用程式碼。您不能在不同的應用程式之間共用動態框架,即使它們都是由同一開發人員簽署的。

如果你想使用Firebase作為動態框架目標的依賴項,你還需要動態連結Firebase;否則,您將在應用程式的運行時遇到重複的類別定義。動態連結是use_frameworks! ,但您仍然可以在 Podfile 中明確指定動態連結:

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

請注意,動態連結可能會增加應用程式的啟動時間,尤其是當您的應用程式具有大量相依性時。