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. Belirli dinamik kitaplık davranışlarına ihtiyacınız yoksa statik çerçeveler kullanmanızı öneririz.
GitHub dışında geliştirilen kitaplıkların, CocoaPods 1.9.0 ve sonraki 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çeriyor. Zip dosyası, Swift Package Manager ve Carthage dahil olmak üzere diğer tüm dağıtım kanalları yalnızca statik olarak bağlı kitaplıklar sağlar.
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 aşağıdaki dokümanları inceleyin:
Bu doküman, yürütülebilir olmayan kaynak paketlerinin yüklenmesi ile değil, kitaplık bağlantısı türleriyle ilgili olduğundan kitaplık ve çerçeve terimleri birbirinin yerine kullanılır.
Statik bağlantı
Statik olarak bağlanmış kitaplıklar, derleme sırasında uygulamanızın yürütülebilir dosyasına dahil edilir. Sonuç olarak, statik kitaplıktaki nesne dosyaları uygulamanız başlatılırken uygulamanızda bulunur ve uygulama başlatılırken dinamik bağlayıcı tarafından çözülmesi gerekmez. Sonuç olarak, statik bağlantı kullanan uygulamalar daha hızlı açılır. Bu, biraz daha büyük bir ikili / uygulama yürütülebilir dosyayla sonuçlanır. Ancak daha büyük yürütülebilir dosya boyutunun, paketlenmiş dinamik kitaplıkların olmamasıyla dengeleneceği unutulmamalıdır.
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ğlanan kitaplıklar, uygulamanızın ana yürütülebilir dosyasından ayrı olarak uygulama paketinizde depolanır ve uygulama başlatıldığında dinamik bağlayıcı tarafından yüklenmesi gerekir. Apple'ın çerçevelerinin tümü, süreçler arasında kod paylaşımını sağlamak için dinamik olarak bağlanır. Benzer şekilde, uygulamanız ile uzantı hedefleri 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 hedefine bağımlı 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ı ile karşılaşırsınız. 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ının, özellikle uygulamanızda çok fazla bağımlılık varsa uygulamanızın başlatma süresini artırabileceğini unutmayın.