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, Firebase ML i Performance Monitoring. 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:

Ponieważ ten dokument dotyczy typów powiązań bibliotek, a nie wczytywania niewykonalnych pakietów zasobów, terminy bibliotekramek są używane zamiennie.

Łą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. Wymaga to nieco większego pliku binarnego lub wykonywalnego, ale należy pamiętać, że większy rozmiar pliku wykonywalnego zostanie zrekompensowany brakiem w pakiecie 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ą połączone dynamicznie, aby umożliwić udostępnianie kodu między procesami. Podobnie możesz używać platform dynamicznych do udostępniania kodu między aplikacją a miejscami docelowymi rozszerzenia. 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.