Apple의 공식 설명에 따르면 Package.resolved에는 해석된 패키지의 정확한 버전이 기록됩니다. 잠금 파일이 의존성 버전을 고정하는 방식을 확인한 뒤, 오류를 저장소 접근·버전 조건·잠금 파일·빌드 문제로 나눠 살펴보세요. 원인을 확인하기 전에는 캐시를 지우거나 수업에서 지정한 버전을 바꾸지 말고, 마지막에는 원래 프로젝트를 다시 빌드해 확인합니다.
이 안내는 Swift 강의를 따라 패키지를 추가하다 Xcode에서 분석이나 다운로드가 멈춘 학생을 위한 내용입니다.
SwiftUI 과제의 의존성 버전을 함부로 바꾸지 않고 확인하려는 초보자도 따라 할 수 있습니다.
학교 컴퓨터나 원격 Mac을 쓰고 있다면 네트워크와 계정 권한, 프로젝트 설정 중 어디서 막혔는지 구분해 보세요.
01 Swift Package Manager 의존성 해결 실패는 오류 단계부터 나눕니다
빨간 오류가 보인다고 해서 모두 다운로드 문제인 것은 아닙니다. Xcode는 패키지 의존성을 관리하고, 패키지를 분석한 뒤 프로젝트를 빌드합니다. 따라서 오류가 어느 단계에서 생겼는지 먼저 기록해야 합니다. Xcode의 Swift 패키지 관리 안내에서도 패키지 추가와 의존성 관리 흐름을 확인할 수 있습니다.
| 화면에서 보이는 현상 | 우선 확인할 곳 | 다음 조치 |
|---|---|---|
| 저장소를 찾지 못하거나 연결되지 않음 | 저장소 주소, 네트워크, 인증 | 공개 저장소와 비공개 저장소를 구분해 접근 권한 확인 |
| 다운로드가 중단되거나 분석이 끝나지 않음 | 연결 상태, 학교 네트워크, 계정 | 같은 주소에 접근할 수 있는지 확인하고 담당자에게 문의 |
| 요구 버전을 만족하는 패키지가 없다는 오류 | 수업의 버전 조건과 패키지 규칙 | 수업에서 지정한 조건을 먼저 대조 |
| 패키지 분석은 끝났지만 빌드가 실패함 | 빌드 로그, 대상 플랫폼, 제품 설정 | 네트워크 점검을 멈추고 프로젝트와 패키지 호환성 확인 |
오류 문구를 복사하거나 화면을 저장해 두세요. “저장소에 연결하지 못함”과 “요구 조건에 맞는 버전이 없음”은 원인이 다릅니다. 문구를 기록하지 않으면 같은 조치를 반복하면서 문제의 단서를 놓치기 쉽습니다.
02 첫 번째 점검은 저장소 주소와 접근 권한입니다
다운로드가 실패하면 수업 자료의 주소와 Xcode 프로젝트에 등록된 주소가 같은지 대조하세요. 주소의 철자나 저장소 위치가 잘못되면 패키지에 도달할 수 없습니다. 저장소를 관리하는 곳에서 주소가 바뀌었는지도 확인합니다. 의존성을 추가하는 기본 흐름은 Swift Package Manager의 의존성 추가 문서에 설명되어 있습니다.
그다음 공개 패키지인지 비공개 패키지인지 확인하세요. 공개 패키지는 주소와 네트워크 상태를 먼저 볼 수 있습니다. 비공개 패키지는 저장소 접근 권한과 로그인 계정이 추가로 필요할 수 있습니다. 주소가 정확해도 권한이 없다면 받을 수 없으므로, 담당자에게 계정 접근 권한을 확인해야 합니다.
학교 네트워크에서만 실패한다면 네트워크 담당자에게 해당 저장소에 접근할 수 있는지 문의하세요. 제한을 우회하거나 보안 검증을 끄는 방식은 사용하지 않습니다. 지금 쓰는 연결에서만 문제가 생기는지, 계정이나 저장소 권한 문제인지 분리해서 확인하는 것이 안전합니다.
03 버전 조건은 수업의 요구 사항과 먼저 대조합니다
패키지에는 사용할 수 있는 버전 범위와 호환 조건이 있습니다. 프로젝트가 요구하는 조건과 저장소에서 제공되는 버전이 맞지 않으면 분석이 실패할 수 있습니다. 버전 조건을 정하는 방식은 Swift 패키지의 버전 요구 규칙에 안내되어 있습니다.
먼저 수업 자료에 패키지 버전이나 프로젝트 파일에 관한 지시가 있는지 확인하세요. Xcode가 제안하는 변경을 바로 적용하기 전에 그 변경이 수업의 기준과 맞는지 비교해야 합니다. 최소 버전을 임의로 올리거나 다른 패키지로 바꾸면 분석 오류는 사라져도 강의 자료와 프로젝트 상태가 달라질 수 있습니다.
버전 조건과 사용 가능한 버전이 맞지 않는다면, 수업 담당자나 저장소 관리자가 지정한 버전이 최신 조건과 충돌하는지 문의하세요. 해결 방법을 고를 때는 “일단 분석을 통과시키기”보다 “과제의 기준 환경을 유지하기”를 우선합니다.
04 Package.resolved는 과제의 버전 기록으로 확인합니다
Package.resolved는 프로젝트에서 선택된 정확한 패키지 버전을 기록합니다. 여러 번 작업한 프로젝트에서 이 파일이 바뀌었다면, 의존성을 업데이트한 결과인지 실수로 수정된 것인지 구분해야 합니다. 파일의 역할과 빌드 흐름은 패키지 의존성을 고정해 빌드하는 공식 안내와 대조할 수 있습니다.
파일의 현재 변경 상태를 확인하고, 수업 저장소에 제출된 기록과 비교하세요. 수업에서 제공한 버전을 복원하는 작업과 새 버전으로 업데이트하는 작업은 목적이 다릅니다. 어느 쪽인지 정하지 않은 채 파일을 지우면, 다른 패키지까지 새로 선택되어 원래 결과를 다시 만들기 어려워질 수 있습니다.
변경이 필요하면 먼저 원본을 따로 보관하고, 바뀌는 패키지와 과제에 미칠 영향을 기록하세요. Package.resolved가 프로젝트에서 관리되는 방식은 작업 흐름에 따라 달라질 수 있으므로, 패키지 의존성 추가에 관한 Swift 공식 설명과 프로젝트의 실제 파일 위치를 함께 확인합니다.
05 자주 묻는 문제는 원인별로 분리합니다
Xcode가 패키지를 계속 분석 중이면 어떻게 하나요?
화면의 원문 오류를 저장하고 저장소 주소, 네트워크 접근, 계정 권한을 차례로 확인합니다. 대기 상태만 보고 잠금 파일이나 캐시를 먼저 지우지 마세요.
다운로드 실패가 네트워크 문제인지 권한 문제인지 어떻게 구분하나요?
공개 저장소 연결 여부와 비공개 패키지 계정 권한을 따로 점검합니다. 학교 네트워크에서만 실패하면 담당자에게 접근 제한을 확인하고, 인증이 필요하다면 저장소 관리자로부터 권한을 받습니다.
Package.resolved의 기록과 프로젝트 의존성이 다르면 어떻게 하나요?
수업에서 제공한 저장소의 변경 기록과 현재 파일을 비교합니다. 원래 과제 환경을 복원하려는지 새 버전을 사용하려는지 먼저 결정하고, 파일을 바꾸기 전에는 원본을 보관합니다.
분석은 성공했는데 빌드가 실패하면 무엇을 확인하나요?
패키지 다운로드를 다시 시도하기보다 첫 빌드 오류와 대상 플랫폼, 필요한 제품을 확인합니다. 작은 연습 프로젝트에서도 재현되는지 비교해 개별 프로젝트 설정인지 환경 문제인지 나눕니다.
06 분석 성공 뒤에는 빌드 로그를 확인합니다
패키지 분석이 완료되었다면 연결 오류를 반복해서 점검하지 마세요. 빌드 로그에서 가장 먼저 실패한 부분을 찾고, 프로젝트가 사용하는 대상 플랫폼과 패키지가 제공하는 제품이 맞는지 살펴봅니다. 패키지 자체의 요구 조건과 이를 사용하는 앱의 빌드 흐름은 패키지와 이를 사용하는 앱의 빌드 문서를 기준으로 확인할 수 있습니다.
문제가 현재 과제에만 있는지 확인하려면 작은 새 연습 프로젝트에서 같은 패키지를 추가해 비교하세요. 새 프로젝트에서는 빌드되지만 과제 프로젝트만 실패한다면, 과제의 설정이나 필요한 제품 연결을 먼저 살펴봅니다. 둘 다 실패한다면 현재 개발 환경이나 패키지 요구 조건을 추가로 확인합니다. 새 프로젝트에서 성공했다고 해서 원래 과제의 설정을 바꾸기 전에 원본 프로젝트와 비교해야 합니다.
07 마지막에는 원래 과제로 다시 검증합니다
아래 순서대로 한 번에 한 가지 원인만 처리하세요.
- [ ] Xcode에 표시된 오류 원문을 기록합니다.
- [ ] 수업에서 제공한 저장소 주소와 프로젝트의 주소를 대조합니다.
- [ ] 공개 저장소인지 비공개 저장소인지 확인하고, 필요한 계정 권한을 점검합니다.
- [ ] 수업에서 요구한 버전 조건과 패키지에서 허용하는 조건을 비교합니다.
- [ ]
Package.resolved의 변경 여부와 수업 저장소의 기록을 대조합니다. - [ ] 패키지 분석이 끝났다면 빌드 로그에서 처음 실패한 항목을 확인합니다.
- [ ] 수정 뒤에는 원래 수업 프로젝트에서 다시 분석하고 빌드합니다.
이 과정에서 매번 한 가지 변경만 해야 원인을 좁힐 수 있습니다. 여러 설정과 버전을 한꺼번에 바꾸면 어떤 조치가 효과가 있었는지 알기 어렵습니다. 공식 안내에서도 의존성을 추가하고 빌드하는 절차를 따로 설명하므로, Swift 패키지 구성과 버전 조건 문서를 참고해 프로젝트 조건과 비교하세요.
현재 Windows 컴퓨터나 설치 제한이 있는 학교 기기에서 작업 중이라면, Xcode를 실행할 수 있는 macOS 환경에 접근하기 어렵고 계정 권한이나 네트워크 조건도 학교 설정에 좌우될 수 있습니다. 원격 Mac은 호환되는 macOS 환경에서 과제를 재현하는 선택지가 될 수 있지만, 패키지 버전 충돌이나 저장소 권한 오류를 대신 해결해 주지는 않습니다. 기존 환경에서 Python이나 웹 개발을 계속할 수 있고 Mac 전용 과제가 없다면 굳이 바꿀 이유가 없습니다. 수업 프로젝트를 실제 Xcode 환경에서 확인해야 하지만 Mac을 보유하지 않았다면, CALMVPS의 원격 Mac 사용 안내를 살펴보고 필요한 기간과 사용 조건을 판단하세요. 비용과 이용 조건은 CALMVPS 요금 안내에서 확인할 수 있습니다.