CocoaPods 1.9.0 ve Firebase 7'den itibaren Firebase bağımlılıklarınızın statik mi yoksa dinamik mi çerçeve olarak oluşturulacağını seçebilirsiniz. Önerilerimiz: belirli dinamik kitaplık davranışlarına ihtiyaç duymuyorsanız statik çerçeveler kullanabilirsiniz.
GitHub dışında geliştirilen kitaplıkların yalnızca statik olarak bağlanabileceğini unutmayın. Bu özelliği CocoaPods 1.9.0 ve sonraki sürümlerde bile kullanabilirsiniz. Şu anda bu kitaplık listesinde AdMob, Analytics, Firebase ML ve Performance Monitoring. Diğer tüm dağıtımlar ve diğer kanallar gibi kanallar, örneğin, zip dosyası, Swift Package Manager ve Carthage yalnızca statik olarak bağlantılı kitaplıklar.
Bu dokümanda, Apple platformlarında dinamik ve statik bağlantı oluşturma hakkında bilgi sahibi olduğunuz varsayılmaktadır. Bu kavramlara aşina değilseniz şu dokümanları bulabilirsiniz:
Bu belge kütüphane bağlantısının türleriyle ilgili olduğundan ve yürütülemeyen kaynak paketlerinin yüklenmesi, kitaplık ve çerçeve terimleri birbirlerinin yerine kullanılır.
Statik bağlantı
Statik olarak bağlantılı kitaplıklar, anlamına gelir. Sonuç olarak, statik kitaplıktaki nesne dosyaları kullanıma sunulduğunda ve uygulama lansman zamanında çözülmesi gerekmez bunu değiştirebilirsiniz. Bunun sonucunda, statik bağlantı kullanan uygulamalar daha hızlı. Bunun nedeni, yürütülebilir bir ikili program / uygulama boyutunun biraz daha büyük olması ve daha büyük olan yürütülebilir boyutun ise %400'e kadar dinamik kitaplıkların eksikliği.
Pod dosyanızda bağlantıyı açıkça belirterek Firebase bağımlılıkları için statik bağlantıyı zorunlu kılabilirsiniz:
# cocoapods >= 1.9.0
use_frameworks! :linkage => :static
Dinamik bağlantı
Dinamik olarak bağlantılı kitaplıklar, uygulama paketinizde çalıştırılabilir ve uygulama başlatma anında dinamik uygulama tarafından yüklenmeleri gerekir. bağlayıcı. Kod paylaşımını etkinleştirmek için Apple'ın çerçevelerinin tümü dinamik olarak bağlanır belirli süreçler arasında Benzer şekilde, kodu paylaşmak için dinamik çerçeveleri Google Analytics 4'te gösterilir. Dinamik çerçeveleri paylaşamazsınız (aynı sözleşme imzalatılmış olsa bile) geliştiriciyim.
Firebase'i dinamik çerçeve hedefinin bağımlılığı olarak kullanmak istiyorsanız
Firebase'i dinamik olarak bağlamanız gerekir. Aksi takdirde
yinelenen sınıf tanımları
test edebilir. Dinamik bağlantı, use_frameworks!
ile varsayılan davranıştır ancak Pod dosyanızda dinamik bağlantıyı açıkça belirtebilirsiniz:
# cocoapods >= 1.9.0
use_frameworks! :linkage => :dynamic
Dinamik bağlantı, özellikle aşağıdaki durumlarda uygulamanızın lansman süresini uzatabilir. uygulamanızın çok fazla bağımlılığı var.