몇 달 전에 KakaoSDK를 감싸서 Swift Package를 만든 적이 있습니다. 버전 업을 해둘까해서 오랜만에 가볍게 손을 대봤는데... 크게 중요한 건 아니지만 신경쓰이는 부분이 생겨서 한참을 확인했습니다.
Alamofire의 dependencies 추가 예시 |
.package(url: "https://github.com/Alamofire/Alamofire.git", .upToNextMajor(from: "5.4.0")), |
AnyCodable의 dependencies 추가 예시 |
.package(url: "https://github.com/Flight-School/AnyCodable", from: "0.6.0"), |
RxSwift의 dependencies 추가 예시 |
.package(url: "https://github.com/ReactiveX/RxSwift.git", .exact("6.2.0")), |
KakaoSDKWrapper의 dependencies 추가 예시 |
.package(name: "KakaoSDKWrapper", url: "https://github.com/utrpanic/kakao-sdk-ios-wrapper.git", .upToNextMajor(from: "2.0.0")), |
KakaoSDKWrapper 의 경우, package() 호출 시 name argument가 반드시 필요합니다. 이걸 생략할 경우, Xcode는 리포 이름(kakao-sdk-ios-wrapper)을 패키지 이름으로 인식하게 되는데요. 분명 KakaoSDKWrapper/Package.swift에 패키지 이름이 명시되어 있는데 왜 그걸 기본값으로 사용하지 않고 리포 이름을 사용하는지도 잘 이해가 가지 않았고, 그렇다고 패키지 이름을 사용하는 쪽에서 재정의할 수 있는 것도 아니었습니다.
한참을 실랑이하다가 생각하게 되었는데;;; 결국 MyProject/Package.swift 의 컴파일이 성공해야만 깃헙에서 해당 패키지를 가져오기 시작하기 때문에, 컴파일 시점에는 KakaoSDKWrapper/Package.swift 의 내용을 확인할 수 없으니 url에 있는 리포 이름을 패키지 이름의 기본값으로 사용한 후 런타임에 에러를 일으키는 상황으로 보입니다. 개인적으로... 리포 이름에는 소문자와 하이픈만 사용하는 편입니다(결국 url에 사용되니까?). 찾아보니 그런 걸 Kebab case라고 부르는군요.
Local package를 만들어서 테스트하고 있었는데, Package.swift 가 정상적으로 빌드되면 별도로 추가하지 않아도 해당 local package의 scheme이 생성됩니다. 반대로 Package.swift 가 깨지면 해당 scheme 이 깨지게 되는데... 깨지고 있던 Package.swift를 복구 해도 scheme 은 복구되지 않고 같은 에러를 표시하는 경험을 제법 많이 했습니다. 이번엔 분명 문제가 없는데 이상하다... 하는 생각이 든다면 Xcode를 껐다 켜는 게 좋을 것 같습니다.
Swift Package Dependencies는 누가 들고 있는 걸까 (3) | 2021.05.09 |
---|---|
맥북에어(2020) vs 맥북프로(2019) (0) | 2021.02.08 |
댓글 영역