최근 프로젝트 빌드 속도가 눈에 띄게 느려져 개선 방법을 찾던 중, Dependency Manager로 Cocoapods 대신 Carthage를 사용하면 개선에 도움이 된다는 정보를 듣고 정리해보았습니다.
Centralized Dependency Manager
- centralized란, 프레임워크를 다운로드 받기 위한 단일 소스가 있다는 뜻입니다.
- Cocoapods은 모든 프레임워크를 관리하는 Specs라는 single main repository를 기반으로 합니다.
- 개발한 프레임워크를 공유하려면 개발자들은 Specs에 새 버전을 푸시해야 합니다.
- Coacoapods의 홈페이지에서는 관리 중인 모든 프레임워크를 검색할 수 있습니다.
Decentralized Dependency Manager
dependency가 single main repository에서 관리되지 않고, 분산되어 있습니다.
brew install carthage
touch Cartfile
open -a Xcode ./Cartfile
github "ReactiveX/RxSwift"
carthage update --use-xcframeworks // 모든 플랫폼에 대해 빌드
carthage update --platform iOS --use-xcframeworks // iOS 플랫폼에 대해 빌드
빌드 완료 후, 다음과 같이 프로젝트/Carthage/Build 에서 빌드된 프레임워크를 확인할 수 있다.
6. 설치된 xcframework를 다음 두가지 경로 중 하나에 추가한다.
참고
https://www.codementor.io/blog/swift-package-manager-5f85eqvygj
https://github.com/Carthage/Carthage#differences-between-carthage-and-cocoapods