Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- MVVM
- swift documentation
- combine
- 클린 코드
- clean architecture
- UITextView
- Human interface guide
- Xcode
- Clean Code
- 리펙토링
- UICollectionView
- uitableview
- 리팩토링
- uiscrollview
- RxCocoa
- collectionview
- SWIFT
- 애니메이션
- Observable
- tableView
- ios
- map
- ribs
- 스위프트
- HIG
- Protocol
- rxswift
- Refactoring
- 리펙터링
- swiftUI
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] Carthage (카르타고) - 개념 Cocoapods과 비교하여 이해하기 본문
1. Carthage (카르타고) - 개념 Cocoapods과 비교하여 이해하기 <
Carthage가 나온 이유?
- Cocoapods은 개발자가 편하도록 자동으로 dependency를 설정해주지만, Carthage는 개발자가 직접 설정해주어야 하는 대신에 유연하고 빠른 빌드속도를 제공
- Cocoapods은 자동으로 xcode의 workspace를 만들고 업데이트하여 앱과 관련된 모든 종속성을 관리
- Carthage는 xcodebuild를 통하여 프레임워크 바이너리 파일을 생성
- 즉 Carthage는 Xcode의 책임을 떼어서 오로지 프레임워크만 따로 관리해주기 때문에 더욱 개발자가 유연하게 dependency 를 관리해줄 수 있도록 하기위해서 탄생
- 개발자가 유연하기 dependency를 관리해준다는 의미 - 프로젝트 빌드 시 cocoapods는 자동으로 depenency를 다시 빌드하지만, carthage는 따로 만들어진 바이너리파일을 쓰면 되므로 속도에서도 유리하게 사용이 가능
Carthage와 Cocoapods 동작 방식 이해하기
- 공통점
- Carthage와 Cocoapods은 모두 Dependency Manager의 한 종류
- 저장소 관리
- Cocoapods은 깃헙의 Specs라는 저장소에 Podspec을 통하여 정보가 저장되어 있기 때문에 한 저장소에서 관리를 하는 Dependency Manager
- Carthage는 Cocoapods처럼 한 저장소에 모아놓지 않고 분산되어 있는 형태
- dependency 관리
- Cocoapods은 dependency관리를 자동으로 해주지만, Carthage는 dependency 관리를 개발자가 직접 해주어야 하는 형태
- Cocoapods이 자동으로 dependency 관리 해주는 것들 - .xcworkspace 파일 생성, /Pods/하위 디렉토리에 dependency 관련 정보 기록
- 프로젝트 빌드시 차이점
- Cocoapods은 프로젝트 빌드 시 dependency 다시 빌드
- Carthage는 메인 프로젝트와 별도로 컴파일하여 바이너리 프레임워크를 제공하여, 프로젝트 빌드 시 Carthage 바이너리 파일을 그대로 사용하므로 빌드 시간이 단축
정리
- Cocoapods이 Carthage보다 많은 프레임워크를 지원
- 이 아티클에 따르면 2018년에 Google SDK, Firebase, Facebook 과 같은 프레임워크는 Cartage에서는 지원하지 않았지만 Cocoapods에서는 지원
- Carthage는 Cocoapods보다 빠른 빌드 속도를 지원
- 프레임워크가 많은 프로젝트인 경우 Carthage를 사용하여 빌드 속도를 낮추는 방향으로 하면 좋고, 프레임워크를 많이 사용하지 않을 경우 편하고 많은 프레임워크를 지원하는 Cocoapods으로 간편하게 사용할 것
* 참고
https://github.com/Carthage/Carthage#differences-between-carthage-and-cocoapods
https://github.com/Carthage/Carthage
https://adinugroho.medium.com/when-to-use-cocoapods-when-to-use-carthage-a8757ff93b51
'iOS 응용 (swift)' 카테고리의 다른 글
Comments