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 die Verwendung statischer Frameworks, es sei denn, Sie benötigen bestimmte Verhaltensweisen für dynamische Bibliotheken.

Beachten Sie, dass Bibliotheken, die außerhalb von GitHub entwickelt wurden, auch mit CocoaPods 1.9.0 und höher nur statisch verknüpft werden können. Derzeit umfasst diese Bibliotheksliste AdMob, Analytics, Firebase ML und Performance Monitoring. Alle anderen Verteilungen wie ZIP-Datei, Swift Package Manager und Carthage 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 sich dieses Dokument auf die Arten der Bibliotheksverknüpfung und nicht auf das Laden nicht ausführbarer Ressourcenpakete bezieht, werden die Begriffe Bibliothek und Framework synonym verwendet.

Statische Verknüpfung

Statisch verknüpfte Bibliotheken werden in der ausführbaren Datei Ihrer Anwendung gebündelt unter die Build-Dauer. Als Ergebnis 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 bzw. einer App, 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 im App-Bundle getrennt von der Hauptausführdatei Ihrer App gespeichert und müssen beim Starten der App vom dynamischen Linker geladen werden. 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 dynamische Frameworks nicht zwischen verschiedenen Anwendungen freigeben, auch wenn beide vom selben Entwickler signiert wurden.

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. Die dynamische Verknüpfung ist das Standardverhalten bei use_frameworks!. Sie können die dynamische Verknüpfung aber auch explizit in Ihrer Podfile angeben:

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

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