Firebase bağımlılıklarını statik veya dinamik olarak bağlayın

CocoaPods 1.9.0 ve Firebase 7'den başlayarak Firebase bağımlılıklarınızın statik veya dinamik çerçeveler olarak oluşturulmasını seçebilirsiniz. Belirli dinamik kitaplık davranışlarına ihtiyaç duymadığınız sürece statik çerçeveleri kullanmanızı öneririz.

GitHub dışında geliştirilen kitaplıkların CocoaPods 1.9.0 ve üzeri sürümlerde bile yalnızca statik olarak bağlanabileceğini unutmayın. Şu anda bu kitaplık listesi AdMob, Analytics, Firebase ML ve Performance Monitoring'i içermektedir. Zip dosyası, Swift Paket Yöneticisi ve Carthage dahil diğer tüm dağıtım kanalları yalnızca statik olarak bağlantılı kitaplıklar sağlar.

Bu belgede, Apple platformlarında dinamik ve statik bağlantıya ilişkin çalışma bilgisi varsayılmaktadır. Bu kavramlara aşina değilseniz aşağıdaki belgelere göz atın:

Bu belge çalıştırılamayan kaynak paketlerinin yüklenmesiyle değil, kitaplık bağlantı türleriyle ilgili olduğundan, kitaplık ve çerçeve terimleri birbirinin yerine kullanılmaktadır.

Statik bağlantı

Statik olarak bağlı kitaplıklar, derleme sırasında uygulamanızın yürütülebilir dosyasına paketlenir. Sonuç olarak, statik kitaplıktaki nesne dosyaları, uygulama başlatıldığında uygulamanızda mevcut olacaktır ve uygulama başlatıldığında dinamik bağlayıcı tarafından çözümlenmesine gerek kalmayacaktır. Sonuç olarak, statik bağlantı kullanan uygulamalar daha hızlı başlatılacaktır. Bu, biraz daha büyük bir ikili / uygulama yürütülebilir dosyası pahasına gelir, ancak daha büyük yürütülebilir boyutun, paketlenmiş dinamik kitaplıkların eksikliği nedeniyle dengeleneceği unutulmamalıdır.

Pod dosyanızda bağlantıyı açıkça belirterek Firebase bağımlılıklarının statik bağlanmasını zorlayabilirsiniz:

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

Dinamik bağlantı

Dinamik olarak bağlı kitaplıklar, uygulama paketinizde uygulamanızın ana yürütülebilir dosyasından ayrı olarak depolanır ve uygulama başlatıldığında dinamik bağlayıcı tarafından yüklenmeleri gerekir. Apple'ın çerçevelerinin tümü, süreçler arasında kod paylaşımını mümkün kılmak için dinamik olarak bağlantılıdır; benzer şekilde, uygulamanız ile uzantı hedefleriniz arasında kod paylaşmak için dinamik çerçeveleri kullanabilirsiniz. Her ikisi de aynı geliştirici tarafından imzalanmış olsa bile dinamik çerçeveleri ayrı uygulamalar arasında paylaşamazsınız.

Firebase'i dinamik bir çerçeve hedefinin bağımlılığı olarak kullanmak istiyorsanız Firebase'i dinamik olarak da bağlamanız gerekir; aksi takdirde uygulamanızın çalışma zamanında yinelenen sınıf tanımlarıyla karşılaşırsınız. Dinamik bağlantı, use_frameworks! , ancak yine de Pod dosyanızda dinamik bağlantıyı açıkça belirtebilirsiniz:

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

Özellikle uygulamanızda çok fazla bağımlılık varsa, dinamik bağlantının uygulamanızın başlama süresini artırabileceğini unutmayın.