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

CocoaPods 1.9.0 ve Firebase 7 ile başlayarak, Firebase bağımlılıklarınızın statik mi yoksa dinamik çerçeveler olarak mı oluşturulacağını seçebilirsiniz. Belirli dinamik kitaplık davranışlarına ihtiyaç duymadığınız sürece 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çerir. Zip dosyası, Swift Paket Yöneticisi ve Carthage dahil olmak üzere diğer tüm dağıtım kanalları yalnızca statik olarak bağlantılı kitaplıklar sağlar.

Bu belge, Apple platformlarında dinamik ve statik bağlantı konusunda çalışan bir bilgi birikimine sahip olduğunu varsayar. Bu kavramlara aşina değilseniz, aşağıdaki belgelere bir göz atın:

Bu belge kitaplığı bağlantı olup yürütülemeyen kaynak demetlerinin yükleme tipleriyle ilgili olduğu için, terimler kütüphane çerçeve birbirlerinin yerine kullanılır.

Statik bağlama

Statik olarak bağlantılı kitaplıklar, uygulamanızın yürütülebilir dosyasına derleme zamanında paketlenir. Sonuç olarak, statik kitaplıktaki nesne dosyaları, uygulama başlatıldığında uygulamanızda bulunur ve uygulama başlatma zamanında 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 dosyası pahasına gelir, ancak daha büyük yürütülebilir boyutun, paketlenmiş dinamik kitaplıkların olmaması nedeniyle dengeleneceği belirtilmelidir.

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

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

Dinamik bağlantı

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

Firebase'i bir dinamik çerçeve hedefinin bağımlılığı olarak kullanmak istiyorsanız, Firebase'i dinamik olarak da bağlamanız gerekir; aksi takdirde içine edeceğiz yinelenen sınıf tanımlarına uygulamanızın çalışma zamanı. Dinamik bağlama ile varsayılan davranıştır 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ızın çok fazla bağımlılığı varsa, dinamik bağlantının uygulamanızın başlatma süresini artırabileceğini unutmayın.