Ab CocoaPods 1.9.0 und Firebase 7 können Sie auswählen, ob Ihre Firebase-Abhängigkeiten als statische oder dynamische Frameworks erstellt werden. Wir empfehlen die Verwendung statischer Frameworks, es sei denn, Sie benötigen bestimmte Verhaltensweisen dynamischer Bibliotheken.
Bibliotheken, die außerhalb von GitHub entwickelt wurden, können auch mit CocoaPods 1.9.0 und höher nur statisch verknüpft werden. Derzeit umfasst diese Bibliotheksliste AdMob, Analytics, Firebase ML, und Performance Monitoring. Alle anderen Vertriebskanäle, einschließlich der ZIP-Datei, Swift Package Manager und Carthage, bieten nur statisch verknüpfte Bibliotheken.
In diesem Dokument wird davon ausgegangen, dass Sie mit der dynamischen und statischen Verknüpfung auf Apple-Plattformen vertraut sind. Wenn Sie mit diesen Konzepten nicht vertraut sind, lesen Sie die folgende Dokumentation:
- Mach-O-Programmierthemen
- Programmierthemen für dynamische Bibliotheken
- Firebase in Bibliotheken verwenden
Da es in diesem Dokument um die Arten der Bibliotheksverknüpfung und nicht um das Laden nicht ausführbarer Ressourcenpakete geht, werden die Begriffe Bibliothek und Framework austauschbar verwendet.
Statische Verknüpfung
Statisch verknüpfte Bibliotheken werden zur Build-Zeit in die ausführbare Datei Ihrer Anwendung eingebunden. Daher sind die Objektdateien in der statischen Bibliothek beim Start Ihrer App vorhanden und müssen nicht vom dynamischen Linker aufgelöst werden. Apps, die statische Verknüpfung verwenden, werden daher schneller gestartet. Dies führt zu einer etwas größeren ausführbaren Binärdatei bzw. App, wobei die größere Größe durch das Fehlen gebündelter dynamischer Bibliotheken ausgeglichen wird.
Sie können die statische Verknüpfung von Firebase-Abhängigkeiten erzwingen, indem Sie die Verknüpfung explizit in Ihrer Podfile angeben:
# cocoapods >= 1.9.0
use_frameworks! :linkage => :static
Dynamische Verknüpfung
Dynamisch verknüpfte Bibliotheken werden separat von der ausführbaren Hauptdatei Ihrer App im App-Bundle gespeichert und müssen beim Start der App vom dynamischen Linker geladen werden. Die Frameworks von Apple sind alle dynamisch verknüpft, um die gemeinsame Nutzung von Code zwischen Prozessen zu ermöglichen. Ebenso können Sie dynamische Frameworks verwenden, um Code zwischen Ihrer App und Erweiterungszielen freizugeben. Dynamische Frameworks können nicht zwischen separaten Anwendungen freigegeben werden, auch wenn beide vom selben Entwickler signiert sind.
Wenn Sie Firebase als Abhängigkeit eines dynamischen Framework-Ziels verwenden möchten, müssen Sie Firebase
auch dynamisch verknüpfen. Andernfalls treten in der Laufzeit Ihrer App
doppelte Klassendefinitionen
auf. Die dynamische Verknüpfung ist das Standardverhalten bei use_frameworks!, aber Sie können die dynamische Verknüpfung weiterhin explizit in Ihrer Podfile angeben:
# cocoapods >= 1.9.0
use_frameworks! :linkage => :dynamic
Die dynamische Verknüpfung kann die Startzeit Ihrer App verlängern, insbesondere wenn Ihre App viele Abhängigkeiten hat.