Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Collega le dipendenze di Firebase in modo statico o dinamico

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

A partire da CocoaPods 1.9.0 e Firebase 7, puoi scegliere se le tue dipendenze Firebase sono costruite come framework statici o dinamici. Ti consigliamo di utilizzare framework statici a meno che tu non richieda determinati comportamenti della libreria dinamica.

Nota che le librerie sviluppate al di fuori di GitHub possono essere collegate solo staticamente anche con CocoaPods 1.9.0 e versioni successive. Attualmente, questo elenco di librerie include AdMob, Analytics, Firebase ML e Monitoraggio delle prestazioni. Tutti gli altri canali di distribuzione, inclusi il file zip, Swift Package Manager e Carthage, forniscono solo librerie collegate staticamente.

Questo documento presuppone una conoscenza pratica del collegamento dinamico e statico su piattaforme Apple. Se non hai familiarità con questi concetti, dai un'occhiata alla seguente documentazione:

Poiché questo documento riguarda i tipi di collegamento delle librerie e non il caricamento di bundle di risorse non eseguibili, i termini libreria e framework sono usati in modo intercambiabile.

Collegamento statico

Le librerie collegate staticamente sono raggruppate nell'eseguibile dell'applicazione in fase di compilazione. Di conseguenza, i file oggetto nella libreria statica saranno presenti nell'app all'avvio e non dovranno essere risolti al momento dell'avvio dell'app dal linker dinamico. Di conseguenza, le app che utilizzano il collegamento statico verranno avviate più rapidamente. Ciò va a scapito di un eseguibile binario/app leggermente più grande, anche se va notato che la dimensione dell'eseguibile maggiore sarà compensata dalla mancanza di librerie dinamiche in bundle.

Puoi forzare il collegamento statico delle dipendenze Firebase specificando esplicitamente il collegamento nel tuo Podfile:

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

Collegamento dinamico

Le librerie collegate dinamicamente vengono archiviate nell'app bundle separatamente dall'eseguibile principale dell'app e devono essere caricate al momento dell'avvio dell'app dal linker dinamico. I framework di Apple sono tutti collegati dinamicamente per consentire la condivisione del codice tra i processi; allo stesso modo, puoi utilizzare framework dinamici per condividere il codice tra la tua app e le destinazioni delle estensioni. Non puoi condividere framework dinamici tra applicazioni separate, anche se entrambe sono firmate dallo stesso sviluppatore.

Se desideri utilizzare Firebase come dipendenza di un target framework dinamico, devi anche collegare Firebase in modo dinamico; altrimenti ti imbatterai in definizioni di classe duplicate nel runtime della tua app. Il collegamento dinamico è il comportamento predefinito con use_frameworks! , ma puoi comunque specificare esplicitamente il collegamento dinamico nel tuo Podfile:

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

Tieni presente che il collegamento dinamico può aumentare il tempo di avvio della tua app, soprattutto se la tua app ha molte dipendenze.