To będzie krótka notka. Swift Package Manager to narzędzie do zarządzania zależnościami w projektach pisanych w Swift, z całkiem elegancką integracją z Xcode. Zanim powstał, złotym standardem było inne narzędzie: stworzone przez społeczność Cocoapods napisane w języku Ruby. Swoje czasy chwały święcił, gdy do pisania aplikacji na urządzenia Apple'a używało się języka Objective-C. Czasy się jednak zmieniają, powstają nowe języki, i nowe narzędzia. I wypadałoby z duchem tego czasu iść, ale prawda jest taka, że nadal wiele projektów napisanych w Obj-C i wspartych "podsami" nadal działa i ma się świetnie.
Jest sprytny sposób na pozbycie się przynajmniej jednego z tych reliktów - można z powodzeniem zastąpić Cocoapods SPMem.
W ramach pliku Package.swift
można zdefiniować tak zwany .binaryTarget
, który zamiast ścieżki do plikow kodu źrodłowego, oczekuje na ścieżkę do zbudowanego wcześniej pliku .xcframework
, lub nawet URLa do skompresowanego Zipem XCFrameworka. Niektóre stare biblioteki często mają załączone w artefaktach kolejnych wersji gotowe, skompilowane biblioteki, ale dla tych oferujących sam kod, również jest ratunek - wystarczy własnorecznie zbudować taki Cocoapodsowy projekt, następnie skompresowany wgrać na jakiegoś CDNa, lub nawet wrzucić do osobnego repozytorium, zbudować odpowiedni plik PackageDescription
- i możemy spokojnie zrobić jeden mały krok do przodu w drodze do modernizacji naszego projektu.
pod deintegrate
- bardzo przydatna komenda, skoro już jesteśmy w tamcie.