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 dynamicznych i statycznych 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
Ten dokument dotyczy rodzajów połączeń z bibliotekami, a nie wczytywanie pakietów zasobów, których nie można wykonać, haseł 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.