Carthage

aralc·2021년 8월 29일
0

    최근 프로젝트 빌드 속도가 눈에 띄게 느려져 개선 방법을 찾던 중, Dependency Manager로 Cocoapods 대신 Carthage를 사용하면 개선에 도움이 된다는 정보를 듣고 정리해보았습니다.

Cocoapods

  1. Podfile의 dependency를 빌드하고, 빌드된 dependency를 Cocoapods이 프로젝트에 자동으로 통합하여 관리해줍니다.
  2. 프로젝트를 build, clean-build, archive 할 때마다 모든 dependency들도 함께 빌드되기 때문에 프로젝트 크기가 커질수록 빌드 속도가 느려질 수 있습니다.
  3. centralized dependency manager 입니다.

Centralized Dependency Manager

  • centralized란, 프레임워크를 다운로드 받기 위한 단일 소스가 있다는 뜻입니다.
  • Cocoapods은 모든 프레임워크를 관리하는 Specs라는 single main repository를 기반으로 합니다.
  • 개발한 프레임워크를 공유하려면 개발자들은 Specs에 새 버전을 푸시해야 합니다.
  • Coacoapods의 홈페이지에서는 관리 중인 모든 프레임워크를 검색할 수 있습니다.

Carthage

  1. Cartfile의 dependency를 빌드하면, Carthage/Build 폴더에서 빌드된 dependency를 확인할 수 있습니다. 빌드된 dependency는 개발자가 직접 프로젝트에 추가해주어야 합니다.
  2. 이미 빌드된 프레임워크를 개발자가 프로젝트 통합 및 관리하기 때문에 xcode가 프로젝트를 빌드할 때마다 dependency를 빌드하지 않습니다.
  3. decentralized dependency manager 입니다.

Decentralized Dependency Manager
dependency가 single main repository에서 관리되지 않고, 분산되어 있습니다.


Carathage로 dependency 설치하기

  1. carthage 설치
brew install carthage
  1. 프로젝트 폴더로 이동
  2. dependency 스팩 명시를 위한 Cartfile 생성
touch Cartfile
open -a Xcode ./Cartfile
  1. 사용할 dependency를 명시
github "ReactiveX/RxSwift"
  1. dependency 빌드
carthage update --use-xcframeworks // 모든 플랫폼에 대해 빌드
carthage update --platform iOS --use-xcframeworks // iOS 플랫폼에 대해 빌드

    빌드 완료 후, 다음과 같이 프로젝트/Carthage/Build 에서 빌드된 프레임워크를 확인할 수 있다.

6. 설치된 xcframework를 다음 두가지 경로 중 하나에 추가한다.

  • General > Framework, Libraries, and Embedded Content
  • Build Phases > Link Binary with Libraries






참고
https://www.codementor.io/blog/swift-package-manager-5f85eqvygj
https://github.com/Carthage/Carthage#differences-between-carthage-and-cocoapods

profile
aralc

0개의 댓글