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:
- Tematy programowania Mach-O
- Tematy z programowania biblioteki dynamicznej
- Używanie Firebase w bibliotekach
Ponieważ ten dokument dotyczy typów powiązań bibliotek, a nie wczytywania niewykonalnych pakietów zasobów, terminy bibliotek i ramek 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.