Firebase-Abhängigkeiten statisch oder dynamisch verknüpfen

Ab CocoaPods 1.9.0 und Firebase 7 können Sie festlegen, Firebase-Abhängigkeiten werden als statische oder dynamische Frameworks erstellt. Wir empfehlen, statische Frameworks verwenden, es sei denn, Sie benötigen bestimmte dynamische Bibliotheksverhalten.

Außerhalb von GitHub entwickelte Bibliotheken können nur statisch verknüpft werden. auch mit CocoaPods 1.9.0 und höher. Diese Bibliotheksliste umfasst derzeit AdMob, Analytics, Firebase ML und Performance Monitoring. Alle anderen Bereitstellungskanäle, einschließlich der ZIP-Datei, des Swift Package Managers und Carthage, bieten nur statisch verknüpfte Bibliotheken.

In diesem Dokument wird davon ausgegangen, dass Sie mit dynamischer und statischer Verknüpfung auf Apple-Plattformen vertraut sind. Wenn Sie mit diesen Konzepten nicht vertraut sind, werfen Sie einen Blick in die folgenden Dokumentation:

Da es in diesem Dokument um die Arten der Bibliotheksverknüpfung geht und nicht um Laden nicht ausführbarer Ressourcen-Bundles, der Begriffe Bibliothek und Framework werden austauschbar verwendet.

Statische Verknüpfung

Statisch verknüpfte Bibliotheken werden in der ausführbaren Datei Ihrer Anwendung gebündelt unter die Build-Dauer. Daher sind die Objektdateien in der statischen Bibliothek vorhanden. in Ihrer App beim Start und muss nicht beim Start der App behoben werden vom dynamischen Linker entfernt wird. Daher werden Apps, die statische Links verwenden, schneller. Dies geht auf Kosten einer etwas größeren Binärdatei / ausführbaren Anwendung der Anwendung, Allerdings ist zu beachten, dass die größere ausführbare Größe durch und das Fehlen gebündelter dynamischer Bibliotheken.

Sie können eine statische Verknüpfung von Firebase-Abhängigkeiten erzwingen, indem Sie explizit die Verknüpfung in Ihrer Podfile-Datei an:

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

Dynamische Verknüpfung

Dynamisch verknüpfte Bibliotheken werden in Ihrem App Bundle getrennt von den der ausführbaren Datei der App erstellen und zum Startzeitpunkt der App durch den dynamischen Verknüpfung. Die Frameworks von Apple sind alle dynamisch verknüpft, um Code-Sharing zu ermöglichen. zwischen Prozessen; Mit dynamischen Frameworks lassen sich ebenfalls zwischen Ihren App- und Erweiterungszielen. Sie können keine dynamischen Frameworks freigeben zwischen verschiedenen Anwendungen, auch wenn sie beide vom selben Entwickler.

Wenn Sie Firebase als Abhängigkeit eines dynamischen Framework-Ziels verwenden möchten, Firebase muss dynamisch verknüpft werden. sonst stoßen Sie auf Doppelte Klassendefinitionen in der Laufzeit Ihrer App. Dynamische Verknüpfungen sind das Standardverhalten bei use_frameworks!, können aber trotzdem explizit eine dynamische Verknüpfung in Ihrem Podfile:

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

Die dynamische Verknüpfung kann die Startzeit deiner App verlängern, insbesondere wenn dass Ihre App viele Abhängigkeiten hat.