하루하나 알고리즘
iOS 의존성 관리 도구 정리
✅ 의존성 관리란?
의존성 관리란 외부 라이브러리나 프레임워크를 프로젝트에 효율적으로 추가하고 관리하는 방식입니다. 수동으로 라이브러리를 다운로드하고 프로젝트에 추가하는 번거로움을 줄이고, 버전 관리 및 업데이트를 자동화할 수 있습니다.
🔧 주요 의존성 관리 도구
1. CocoaPods
- 설명: 가장 오래되고 널리 사용된 iOS 의존성 관리 도구
- 설치:
sudo gem install cocoapods
- 사용법:
pod init → Podfile 생성
- Podfile에 라이브러리 추가 (
pod 'Alamofire')
pod install로 설치
.xcworkspace 파일 열기
- 장점:
- 방대한 커뮤니티와 문서
- 자동으로 모든 의존성 설치 및 설정
- 단점:
.xcworkspace 파일을 사용해야 함
- Xcode 프로젝트 설정을 직접 수정하여 충돌 위험 존재
- 비교적 느린 속도
2. Carthage
- 설명: 최소한의 개입으로 동작하는 의존성 관리 도구 (비침투적)
- 설치:
brew install carthage
- 사용법:
Cartfile 생성 (github "Alamofire/Alamofire")
carthage update 실행 → Framework 생성
- Xcode에서 수동으로
Linked Frameworks에 추가
- 장점:
- Xcode 프로젝트를 건드리지 않음
- 프레임워크 방식으로 깔끔한 구조
- 단점:
- 수동 설정 필요
- SPM이 등장하며 사용 빈도 감소
3. Swift Package Manager (SPM)
- 설명: Apple 공식 의존성 관리 도구 (Xcode에 통합)
- 설치: 별도 설치 불필요 (Xcode 내장)
- 사용법:
- Xcode →
File → Add Packages
- URL 입력 (ex.
https://github.com/Alamofire/Alamofire)
- 버전 설정 후 추가
- 장점:
- Xcode와 완벽히 통합
- 가장 빠르고 간편한 설정
- 자동 업데이트 및 캐시 관리
- 단점:
- 모든 라이브러리가 SPM을 지원하지 않을 수 있음 (점점 개선 중)
- 복잡한 구성은 어렵게 느껴질 수 있음
✅ 의존성 관리 도구 비교
| 도구 | 프로젝트 침투 | 설치 편의성 | 설정 편의성 | 공식 지원 | 속도 | 수동 설정 여부 |
|---|
| CocoaPods | 높음 | 쉬움 | 쉬움 | ❌ | 느림 | ❌ |
| Carthage | 낮음 | 보통 | 어려움 | ❌ | 빠름 | ✅ |
| SwiftPM | 낮음 | 매우 쉬움 | 매우 쉬움 | ✅ | 빠름 | ❌ |
🌟 의존성 관리를 통해 얻을 수 있는 이점
- 생산성 향상: 외부 라이브러리를 빠르게 설치하고 사용할 수 있음
- 버전 관리 용이: 원하는 라이브러리 버전 명시 가능, 안정적인 개발 가능
- 협업 용이: 팀원이 동일한 환경에서 개발 가능
- 유지보수 간편화: 라이브러리 업데이트가 자동화됨