Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.
Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

Tautkan dependensi Firebase secara statis atau dinamis

Mulai CocoaPods 1.9.0 dan Firebase 7, Anda dapat memilih apakah dependensi Firebase Anda dibuat sebagai framework statis atau dinamis. Kami merekomendasikan penggunaan 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 di platform Apple. Jika Anda tidak terbiasa dengan konsep ini, lihat dokumentasi berikut:

Karena dokumen ini berkaitan dengan jenis keterkaitan pustaka dan bukan pemuatan kumpulan sumber daya yang tidak dapat dieksekusi, istilah pustaka dan kerangka kerja digunakan secara bergantian.

Penautan statis

Library 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 penaut dinamis. Akibatnya, aplikasi yang menggunakan tautan statis akan diluncurkan lebih cepat. Ini datang dengan mengorbankan biner / aplikasi yang sedikit lebih besar yang dapat dieksekusi, meskipun perlu dicatat bahwa ukuran yang dapat dieksekusi yang lebih besar akan diimbangi dengan kurangnya pustaka dinamis yang dibundel.

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

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

Tautan dinamis

Library yang ditautkan secara dinamis disimpan di app bundle Anda secara terpisah dari aplikasi utama yang dapat dieksekusi, dan harus dimuat pada waktu peluncuran aplikasi oleh dynamic linker. Kerangka Apple semuanya terhubung secara dinamis untuk memungkinkan pembagian kode antar proses; Demikian pula, Anda dapat menggunakan framework dinamis untuk berbagi kode antara aplikasi dan target ekstensi Anda. Anda tidak dapat berbagi kerangka kerja dinamis antara aplikasi terpisah, meskipun keduanya ditandatangani oleh pengembang yang sama.

Jika Anda ingin menggunakan Firebase sebagai dependensi dari target framework dinamis, Anda juga perlu menautkan Firebase secara dinamis; jika tidak, Anda akan menemukan definisi kelas duplikat dalam runtime aplikasi Anda. use_frameworks! dinamis adalah perilaku default dengan use_frameworks! , tetapi Anda masih bisa 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 ketergantungan.