관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] Carthage (카르타고) - 개념 Cocoapods과 비교하여 이해하기 본문

iOS 응용 (swift)

[iOS - swift] Carthage (카르타고) - 개념 Cocoapods과 비교하여 이해하기

jake-kim 2023. 3. 5. 23:33

1. Carthage (카르타고) - 개념 Cocoapods과 비교하여 이해하기 < 

2. Carthage (카르타고) - 사용 방법

Carthage가 나온 이유?

* Carthage github readme 내용

  • 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://medium.com/@guilhermegirotto/carthage-vs-cocoapods-a-build-time-analysis-use-case-87b6e8ce707f

https://adinugroho.medium.com/when-to-use-cocoapods-when-to-use-carthage-a8757ff93b51

Comments