Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

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. Si consiglia di utilizzare framework statici a meno che non siano necessari determinati comportamenti della libreria dinamica.

Tieni presente 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, incluso il file zip, Swift Package Manager e Carthage forniscono solo librerie collegate staticamente.

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

Poiché questo documento si occupa dei tipi di collegamento alla libreria e non del caricamento di pacchetti 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ù velocemente. Ciò va a scapito di un eseguibile binario / app leggermente più grande, anche se va notato che la dimensione 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 nel bundle dell'app 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 dell'estensione. Non è possibile 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 ancora 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.