À partir de CocoaPods 1.9.0 et Firebase 7, vous pouvez choisir si votre Les dépendances Firebase sont conçues sous forme de frameworks statiques ou dynamiques. Nous vous recommandons à l'aide de frameworks statiques, sauf si vous avez besoin de certains comportements de bibliothèque dynamiques.
Notez que les bibliothèques développées en dehors de GitHub ne peuvent être liées de manière statique, même avec CocoaPods 1.9.0 ou version ultérieure. Actuellement, cette liste de bibliothèques comprend AdMob, Analytics, Firebase ML et Performance Monitoring. Toutes les autres distributions y compris le fichier ZIP, Swift Package Manager et Carthage fournissent pour les bibliothèques liées de manière statique uniquement.
Ce document suppose une connaissance pratique des liens dynamiques et statiques sur plates-formes Apple. Si vous ne connaissez pas bien ces concepts, consultez la documentation suivante:
- Sujets de programmation de Mach-O
- Sujets liés à la programmation des bibliothèques dynamiques
- Utiliser Firebase dans les bibliothèques
Étant donné que ce document concerne les types de liaison de bibliothèque et non le chargement de bundles de ressources non exécutables, les termes bibliothèque et framework sont utilisés de manière interchangeable.
Association statique
Les bibliothèques liées de manière statique sont regroupées dans l'exécutable de votre application au moment de la compilation. Par conséquent, les fichiers d'objets de la bibliothèque statique seront présents dans votre application au lancement et n'ont pas besoin d'être résolus au moment du lancement de l'application. par l'éditeur de liens dynamiques. Par conséquent, les applications qui utilisent l'association statique se lancent plus rapidement. Cela se fait au détriment d'un exécutable binaire/d'application légèrement plus volumineux, bien que la taille plus importante de l'exécutable soit compensée par l'absence de bibliothèques dynamiques groupées.
Vous pouvez forcer l'association statique des dépendances Firebase en spécifiant explicitement l'association dans votre fichier Podfile :
# cocoapods >= 1.9.0
use_frameworks! :linkage => :static
Liens dynamiques
Les bibliothèques liées de manière dynamique sont stockées dans votre bundle d'application séparément de l'exécutable principal de votre application. Elles doivent être chargées au moment du lancement de l'application par le linker dynamique. Les frameworks d'Apple sont tous liés de manière dynamique 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 les deux signées par le même développeur.
Si vous souhaitez utiliser Firebase comme dépendance d'une cible de framework dynamique, vous devez également associer Firebase de manière dynamique. Sinon, vous rencontrerez des définitions de classe en double au moment de l'exécution de votre application. La liaison dynamique est le comportement par défaut avec use_frameworks!
, mais vous pouvez toujours spécifier explicitement la liaison dynamique dans votre fichier Podfile :
# cocoapods >= 1.9.0
use_frameworks! :linkage => :dynamic
Notez que le lien dynamique peut augmenter le temps de démarrage de votre application, en particulier si elle comporte de nombreuses dépendances.