Posted on

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.