Statyczne lub dynamiczne łączenie zależności Firebase

Od CocoaPods 1.9.0 i Firebase 7 Zależności Firebase mają postać platformy statycznej lub dynamicznej. Zalecamy korzystając ze statycznych platform, chyba że wymagają określonych działań biblioteki dynamicznej.

Pamiętaj, że biblioteki utworzone poza GitHubem można łączyć tylko statycznie nawet w przypadku CocoaPods w wersji 1.9.0 i nowszych. Obecnie na tej liście biblioteki znajdują się AdMob, Analytics, ML Firebase i Monitorowanie wydajności. Pozostała dystrybucja takie jak plik ZIP, Swift Package Manager i Carthage, tylko statycznie połączone biblioteki.

W tym dokumencie zakładamy, że masz praktyczną wiedzę na temat linków statycznych i dynamicznych w Platformy Apple. Jeśli nie znasz tych pojęć, zapoznaj się z ta dokumentacja:

Ten dokument dotyczy rodzajów połączeń z bibliotekami, a nie wczytywanie pakietów zasobów, których nie można wykonać, terminów biblioteka oraz platforma są używane wymiennie.

Łączenie statyczne

Statycznie połączone biblioteki są połączone w plik wykonywalny aplikacji pod adresem czas kompilacji. W rezultacie w bibliotece statycznej będą dostępne pliki obiektów w aplikacji po jej premierze i nie wymagają rozwiązania w momencie jej uruchomienia. za pomocą dynamicznego tagu łączącego. Oznacza to, że aplikacje korzystające z linków statycznych będą uruchamiane szybciej. Jest to kosztem nieco większych plików binarnych / plików wykonywalnych aplikacji, chociaż należy pamiętać, że większy rozmiar pliku wykonywalnego zostanie przesunięty o brak pakietów bibliotek dynamicznych.

Możesz wymusić statyczne połączenie zależności Firebase, jednoznacznie określając połączenie w pliku Podfile:

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

Linki dynamiczne

Biblioteki połączone dynamicznie są przechowywane w pakiecie aplikacji niezależnie od główny plik wykonywalny aplikacji i muszą być ładowane przy uruchomieniu aplikacji przez dynamiczny komponent tag łączący. Wszystkie platformy Apple są dynamicznie połączone, aby umożliwić udostępnianie kodu. między procesami; Możesz też używać platform dynamicznych do udostępniania kodu między celami aplikacji i rozszerzeń. Nie można udostępniać platform dynamicznych między różnymi aplikacjami, nawet jeśli są podpisane tym samym Google Play.

Jeśli chcesz używać Firebase jako zależności celu platformy dynamicznej, połączyć dynamicznie Firebase; w przeciwnym razie natrafisz na zduplikowane definicje klas w czasie działania aplikacji. Dynamiczne linki to domyślne działanie w przypadku use_frameworks!, ale nadal możesz bezpośrednio określić połączenie dynamiczne w Plik Pod:

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

Pamiętaj, że linki dynamiczne mogą wydłużyć czas uruchamiania aplikacji, zwłaszcza jeśli że Twoja aplikacja ma wiele zależności.