본문 바로가기
ios

[iOS] Carthage 전환 후기

by 고고 2021. 11. 18.

안녕하세요 ◠‿◠ 고고입니다.

개인 프로젝트에서 의존성을 Swift Package Manager에서 Carthage로 전환한 후기입니다.

 

SPM과 Cocoapods는 클린빌드를 할 때마다 모든 프레임워크를 빌드하여 많은 시간이 소요되지만, 프로젝트에 프레임워크들이 자동으로 연결됩니다.

Carthage는 프레임워크를 빌드만 해줄 뿐, 프로젝트에 연결해주지 않습니다. 또한 클린빌드를 하여도 프레임워크를 다시 빌드하지 않습니다.

 

 

바꾼 후 장점 :

  • 빌드 시간이 6~70초 정도 단축되었습니다.
  • 클린 빌드를 두려움없이 사용할 수 있습니다.

 

 

바꾼 후 단점 :

  • Carthage를 지원하지 않는 프레임워크들이 매우 많습니다. 저는 직접 carthage를 지원하게 설정해주어 깃허브에 올리고 사용했습니다. 만약 .framework로 혹은 pod로만 지원하는 프레임워크라면 carthage로 사용할 수 없겠죠?
  • 설정하는 데 시간이 오래 걸립니다.
  • ex1 ) Carthage를 사용할 때, 여러 명이 프레임워크를 빌드할 필요 없게, S3에 빌드된 프레임워크를 캐시하여 그 캐시된 라이브러리를 다운받아 프로젝트에 연결하도록 설정하였습니다.
  • ex2 ) .xcframework로만 지원하는 프레임워크들 때문에 punic을 사용하여 S3에 업로드 해야 했습니다.
  • ex3 ) Carting을 사용하여 프로젝트에 직접 연결하지 않아도 되지만, 무튼 설정하는 시간이 깁니다.
  • ex4 ) 프레임워크가 하나라도 링크가 안되면 오류가 발생해 저를 당황시킵니다.
  • 제 프로젝트에서는 프레임워크들이 약 23개 정도 있는데, 1GB 정도를 차지합니다. 또한 carthage가 라이브러리를 빌드하기 위해 사용한 용량이 7GB쯤이 되더라구요.. 용량이 위태로우시다면 비추천합니다.

 

그리고 프레임워크가 Carthage를 지원하는 것은 조금 까다롭습니다. 따라서 만약 프로젝트를 여러 프레임워크로 나누고 싶다면 다른 의존성 관리 도구를 사용하는 것을 고려해보는 것을 추천드립니다.

댓글