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

CocoaPods 1.9.0 ve Firebase 7'den başlayarak Firebase bağımlılıklarınızın statik mi yoksa dinamik çerçeveler mi olacağı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 sonraki sürümlerde bile yalnızca statik olarak bağlanabileceğini unutmayın. Şu anda bu kitaplık listesinde AdMob, Analytics, Firebase ML ve Performance Monitoring bulunmaktadır. ZIP dosyası, Swift Package Manager 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 belgede, Apple platformlarında dinamik ve statik bağlantı oluşturma konusunda yeterli bilgi sahibi olduğunuz varsayılır. Bu kavramlara aşina değilseniz aşağıdaki belgelere göz atın:

Bu belgede yürütülebilir olmayan kaynak paketlerinin yüklenmesi değil, kitaplık bağlantısının türleriyle ilgili olduğundan kitaplık ve çerçeve terimleri birbirinin yerine kullanılır.

Statik bağlantı

Statik olarak bağlantılı kitaplıklar, derleme sırasında yürütülebilir uygulamanızda paket haline getirilir. Sonuç olarak, statik kitaplıktaki nesne dosyaları uygulama başlatıldığında mevcut olur ve uygulama başlatma sırasında dinamik bağlayıcı tarafından çözülmesi gerekmez. Bunun sonucunda, statik bağlantı kullanan uygulamalar daha hızlı kullanıma sunulacaktır. Bu durum biraz daha büyük bir ikili program / uygulama yürütülebilir dosyadan oluşur, ancak yürütülebilir daha büyük boyutun, paket halinde sunulan dinamik kitaplıkların eksikliği nedeniyle dengeleneceği unutulmamalıdır.

Bağlantıyı Podfile dosyanızda açıkça belirterek Firebase bağımlılıklarının statik bağlantısını zorunlu kılabilirsiniz:

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

Dinamik bağlantı

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

Dinamik çerçeve hedefinin bağımlılığı olarak Firebase'i kullanmak istiyorsanız Firebase'i de dinamik olarak 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! ürününde varsayılan davranıştır ancak yine de dinamik bağlantıyı Podfile dosyanızda belirtebilirsiniz:

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

Dinamik bağlantının, özellikle de uygulamanızın çok fazla bağımlılığı varsa uygulamanızın lansman süresini uzatabileceğini unutmayın.