Xcode Project의 의존성 관리로 주요 사용되는 것은 주로 3가지가 있다. (22.03.24 기준) 각각의 특징에 대해서 알아보자.
도구 | 세팅 | 빌드속도 |
---|---|---|
CocoaPods | 간편함 | 느림 |
Carthage | 복잡함 | 빠름 |
Swift Package Manager | 간편함 | 느림 |
Podfile.lock에 리스트된 팟들에 대해선 지정된 버전만 다운 (새로운 버전 체크하지 않음)
Podfile.lock에 리스트되지 않은 팟들은 Podfile에 명시된 버전 조건으로 검색하여 다운로드
즉, 동료와 버전을 맞추기 위해서는 해당 메서드를 사용해야 한다.
Podfile.lock을 확인하지 않고 최신 버전으로 업데이트
명세서
source "custom repo"
source "custom repo2"
platform: ios, '11.0' # 플랫폼 지정
inhibit_all_warnings! # library에서 발생하는 warning 무시
target 'Example' do
use_frameworks! # Static Library 대신, Framework를 사용
pod 'SnapKit', '~>5.0.0' # 버전지정: 최소 5.0.0 이상 6.0.0 미만 사용
target 'ExampleTests' do # 중첩됨
inherit! :search_paths
pod 'Quick'
pod 'Nimble'
end
end
pod 'SnapKit'
: 최신 버전 의미pod 'SnapKit', '5.0.1'
: 구체적 버전> 0.1
: 초과>= 0.1
: 이상< 0.1
: 미만<= 0.1
: 이하~> 0.1.2
: 0.1.2 이상, 0.2 미만~> 0.1
: 0.1 이상, 1.0 미만특정 브랜치를 지정해서 pod에 추가할수도 있다.
로컬 (직접 라이브러리 개발할 때 사용)
pod 'Alamofire', :path => '~/Documents/Alamofire'
마스터 branch 기준
pod 'Alamofire', :git => '[address].git'
특정 branch 기준
pod 'Alamofire', :git => '[address].git', :branch => 'dev'
태그 기준
pod 'Alamofire', :git => '[address].git', :tag => '3.1.1'
커밋 기준
pod 'Alamofire', :git => '[address].git', :commit => '0f506fe12'