SPM사용 시 Missing package product 에러의 일관된 해결법은 없습니다

임혜정·2024년 9월 17일
0
post-custom-banner

SPM을 사용하는 프로젝트, Github 협업 시 pull을 받으면 흔하게 나타나는 증상인데 해결 방법으로 File - Packages - Reset Package Caches로 해결하곤 한다.

추측으로 Package.resolved 파일이 서로 다른 상태이기 때문에 발생하는데 매번 이 짓을 해야하는게 너무 귀찮다

검색과 gpt로 찾을 수 있는 5가지 정도의 방법으로 해결시도를 해봤으나 결국 이 문제는 xcode 고질적인 문제이고 일관적인 해결법을 찾지 못했다.

올리지도 받지도 않음. 각자 로컬에서는 독립적으로 관리 (해결실패)

  1. 현재 .gitignore 파일에 SPM 관련 항목들이 포함되어 있는지 확인한다. (아래 4개 라인에 대해 주석이 풀려야함) 그리고 pr후 모두가 pull받는다
# Swift Package Manager
Packages/
Package.pins
Package.resolved
*.xcodeproj




두번째해결법 resetPackage를 자동화

  1. 프로젝트 폴더에서 터미널(Terminal) 열기:
    프로젝트 폴더에 대고 오른쪽클릭> 새로운터미널열기

    만일 위 방법말고 cmd+space로 터미널 연다면 터미널에서 cd 명령어를 사용하여 Swift 프로젝트가 있는 디렉토리로 이동.

    cd /path/to/your/swift/project
  2. Git Hooks 디렉토리 확인:
    프로젝트 디렉토리 내에 .git/hooks 폴더가 있는지 확인. 이 폴더는 보통 숨겨져 있고 터미널에서 다음 명령어로 확인할 수잇음

    ls -la .git/hooks
  3. 다음 명령어를 사용해서 .git/hooks 디렉토리 안에 post-merge 파일을 생성한다

    touch .git/hooks/post-merge
  4. post-merge 파일 편집

    nano .git/hooks/post-merge
  5. 열린 편집기에 다음 내용을 입력

    #!/bin/sh
    xcodebuild -resolvePackageDependencies
  6. nano를 사용했다면, Ctrl+X를 누른 후 Y를 누르고 Enter를 눌러 저장하고 종료

  7. 생성한 post-merge 파일에 실행 권한을 부여

    chmod +x .git/hooks/post-merge


    이 과정을 완료하면, 앞으로 `git pull` 명령을 실행할 때마다 자동으로 `xcodebuild -resolvePackageDependencies` 명령이 실행된다.

주의사항:

  • 이 설정은 로컬 저장소에만 적용되기 때문에 다른 팀원들도 각자의 로컬 저장소에서 이 과정을 거쳐야함
  • 프로젝트의 README 파일에 이 설정 방법을 문서화하여 팀원들과 공유하는 것이 좋다.
profile
오늘 배운걸 까먹었을 미래의 나에게..⭐️
post-custom-banner

0개의 댓글