많은 사람과 협업을 하다보면 패키지의 버전 때문에 오류가 나는 경우가 있다. 초기에 버전을 정하고 진행하면 좋지만, 그렇지 못하는 경우도 많기 때문에 해결하는 방법을 정리해보고자 한다.
SPM은 Swift Package Manager의 줄임말로, 패키지 관리 작업을 도와주는 기능이다. 간단한 특징은 다음과 같다.
패키지(라이브러리) 관리: SPM을 사용하면 소스 코드 파일, 의존성 및 리소스와 같은 패키지 컨텐츠를 정의할 수 있다. 이를 통해 프로젝트에 필요한 라이브러리와 모듈을 손쉽게 추가하고 관리할 수 있다.
의존성 관리: SPM은 패키지가 다른 패키지에 의존하는 경우 이를 효과적으로 관리한다. 이를 통해 다른 개발자가 작성한 패키지를 쉽게 프로젝트에 추가하고 사용할 수 있다.
소스 코드 파일 및 리소스 관리: SPM을 사용하여 프로젝트의 소스 코드 파일, 헤더 파일 및 리소스를 구성할 수 있다.
테스트 지원: SPM은 단위 테스트 및 통합 테스트를 지원하며, 패키지 내에서 테스트 코드를 관리하고 실행할 수 있다.
쉽게 말해서 패키지들을 다운로드하고, 삭제하는 기능이라고 생각하면 편할 것 같다.
패키지를 다운로드하는 방법은 예전에 정리를 했기 때문에 참고하면 좋을 것 같다.
Xcode에서 파일의 패키지에 들어가면 3가지 항목을 볼 수 있다.
리졸브는 패키지 의존성을 해결하고 필요한 라이브러리를 다운로드하고 프로젝트에서 사용할 수 있게 하는 과정을 말한다. 패키지 의존성은 프로젝트에서 사용하는 외부 라이브러리나 모듈을 의미한다.
Xcode의 설정에서 Locations 항목에 들어가면 Derived Data를 볼 수 있다.
Derived Data는 Xcode 프로젝트를 빌드하고 실행할 때 생성되는 중간 파일 및 빌드 아티팩트가 저장되는 디렉토리를 가리킨다. 이 디렉토리는 프로젝트를 컴파일하고 빌드하는 동안 생성된 캐시, 중간 파일, 컴파일된 바이너리, 그리고 빌드 과정 중에 생성된 다른 임시 파일을 저장하는 장소이다.
이제 다른 브랜치에서 pull을 땡겨왔는데, 패키지가 꼬여서 오류가 나는 상황이라고 가정을 하자. 아마 꼬이는 패키지가 fetching이 되다가 멈추면서 resolve 할 수 없다고 하면서 오류가 뜨는 것을 볼 수 있다.
이렇게 하면 새로운 패키지의 의존성이 다운로드 되고, 깨진 캐시나 중간 파일 문제가 해결될 가능성이 높다.