Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Lier les dépendances Firebase de manière statique ou dynamique

À partir de CocoaPods 1.9.0 et Firebase 7, vous pouvez choisir si vos dépendances Firebase sont construites en tant que frameworks statiques ou dynamiques. Nous vous recommandons d'utiliser des frameworks statiques, sauf si vous avez besoin de certains comportements de bibliothèque dynamique.

Notez que les bibliothèques développées en dehors de GitHub ne peuvent être liées que de manière statique, même avec CocoaPods 1.9.0 et versions ultérieures. Actuellement, cette liste de bibliothèques inclut AdMob, Analytics, Firebase ML et Performance Monitoring. Tous les autres canaux de distribution, y compris le fichier zip, Swift Package Manager et Carthage fournissent uniquement des bibliothèques liées de manière statique.

Ce document suppose une connaissance pratique des liens dynamiques et statiques sur les plates-formes Apple. Si vous n'êtes pas familier avec ces concepts, consultez la documentation suivante :

Étant donné que ce document concerne les types de liens bibliothèque et non le chargement de faisceaux de ressources non-exécutables, la bibliothèque termes et le cadre sont utilisés de manière interchangeable.

Liaison statique

Les bibliothèques liées de manière statique sont regroupées dans l'exécutable de votre application au moment de la génération. Par conséquent, les fichiers objets de la bibliothèque statique seront présents dans votre application lors de son lancement et n'ont pas besoin d'être résolus au moment du lancement de l'application par l'éditeur de liens dynamique. Par conséquent, les applications utilisant la liaison statique se lanceront plus rapidement. Cela se fait au détriment d'un exécutable binaire/d'application légèrement plus grand, même s'il convient de noter que la taille plus grande de l'exécutable sera compensée par le manque de bibliothèques dynamiques groupées.

Vous pouvez forcer la liaison statique des dépendances Firebase en spécifiant explicitement la liaison dans votre fichier Podfile :

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

Liaison dynamique

Les bibliothèques liées dynamiquement sont stockées dans votre app bundle séparément de l'exécutable principal de votre application, et elles doivent être chargées au moment du lancement de l'application par l'éditeur de liens dynamique. Les frameworks d'Apple sont tous liés dynamiquement pour permettre le partage de code entre les processus ; de même, vous pouvez utiliser des frameworks dynamiques pour partager du code entre votre application et les cibles d'extension. Vous ne pouvez pas partager de frameworks dynamiques entre des applications distinctes, même si elles sont toutes deux signées par le même développeur.

Si vous souhaitez utiliser Firebase en tant que dépendance d'une cible de framework dynamique, vous devez également lier Firebase dynamiquement ; sinon vous tomberez dans les définitions de classe en double dans l'exécution de votre application. Liaison dynamique est le comportement par défaut avec use_frameworks! , mais vous pouvez toujours spécifier explicitement un lien dynamique dans votre fichier Podfile :

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

Notez que la liaison dynamique peut augmenter le temps de lancement de votre application, surtout si votre application a beaucoup de dépendances.