Catch up on everthing we announced at this year's Firebase Summit. Learn more

Tautkan dependensi Firebase secara statis atau dinamis

Dimulai dengan CocoaPods 1.9.0 dan Firebase 7, Anda dapat memilih apakah dependensi Firebase Anda dibuat sebagai kerangka kerja statis atau dinamis. Sebaiknya gunakan kerangka kerja statis kecuali Anda memerlukan perilaku pustaka dinamis tertentu.

Perhatikan bahwa pustaka yang dikembangkan di luar GitHub hanya dapat ditautkan secara statis bahkan dengan CocoaPods 1.9.0 dan yang lebih baru. Saat ini, daftar pustaka ini mencakup AdMob, Analytics, Firebase ML, dan Performance Monitoring. Semua saluran distribusi lainnya, termasuk file zip, Swift Package Manager, dan Carthage hanya menyediakan pustaka yang ditautkan secara statis.

Dokumen ini mengasumsikan pengetahuan kerja tentang penautan dinamis dan statis pada platform Apple. Jika Anda tidak terbiasa dengan konsep-konsep ini, lihat dokumentasi berikut:

Sejak dokumen ini berkaitan dengan jenis linkage perpustakaan dan tidak pemuatan bundel sumber daya non-executable, istilah perpustakaan dan kerangka digunakan secara bergantian.

Tautan statis

Pustaka yang ditautkan secara statis digabungkan ke dalam aplikasi Anda yang dapat dieksekusi pada waktu pembuatan. Akibatnya, file objek di pustaka statis akan ada di aplikasi Anda saat diluncurkan dan tidak perlu diselesaikan pada waktu peluncuran aplikasi oleh tautan dinamis. Akibatnya, aplikasi yang menggunakan tautan statis akan diluncurkan lebih cepat. Ini datang dengan mengorbankan executable biner/aplikasi yang sedikit lebih besar, meskipun perlu dicatat bahwa ukuran executable yang lebih besar akan diimbangi oleh kurangnya library dinamis yang dibundel.

Anda dapat memaksa penautan statis dependensi Firebase dengan secara eksplisit menentukan tautan di Podfile Anda:

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

Tautan dinamis

Pustaka yang ditautkan secara dinamis disimpan dalam bundel aplikasi Anda secara terpisah dari executable utama aplikasi Anda, dan pustaka tersebut harus dimuat pada waktu peluncuran aplikasi oleh penaut dinamis. Kerangka kerja Apple semuanya terhubung secara dinamis untuk memungkinkan berbagi kode antar proses; demikian pula, Anda dapat menggunakan kerangka kerja dinamis untuk berbagi kode antara aplikasi dan target ekstensi Anda. Anda tidak dapat berbagi kerangka kerja dinamis antara aplikasi yang terpisah, meskipun keduanya ditandatangani oleh pengembang yang sama.

Jika Anda ingin menggunakan Firebase sebagai dependensi target kerangka kerja dinamis, Anda juga perlu menautkan Firebase secara dinamis; jika tidak, anda akan mengalami definisi kelas duplikat di runtime aplikasi Anda. Menghubungkan dinamis adalah perilaku default dengan use_frameworks! , tetapi Anda masih dapat secara eksplisit menentukan tautan dinamis di Podfile Anda:

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

Perhatikan bahwa penautan dinamis dapat meningkatkan waktu peluncuran aplikasi Anda, terutama jika aplikasi Anda memiliki banyak dependensi.