티스토리 뷰


Carthage 를 사용하는 이유

가장 처음에는 XCode 에서 지원하는 Static Library 를 썼었다.

이후 CocoaPods 이 나오면서 

새로운 버전 관리 방식과 implementation source 를 함께 볼 수 있는 큰 장점으로

많은 사람들이 이동했다.


하지만 시간이 지날수록 개발자들은 불편함을 느꼈다.


그 이유로는 

첫째, 소스를 모두 받아서 컴파일 시 함께 빌드하는 방식을 사용한다.

따라서 프로젝트에 다른 open source 들을 많이 사용한다면 (dependency 가 높다면)

컴파일 속도가 현저히 느려지게 된다.


둘째, .workspace 라는 개념이 생겼다.

원래 프로젝트에 더해 Pods 프로젝트가 생기게 된다.

pod update 를 하게 되면 Pods 프로젝트와 내 프로젝트 모두에 영향을 끼친다.


셋째, Ruby Version, XCode Version, Mac OS Version 등 컴파일 환경에 영향을 크게 받는다.


이에, Carthage 라는 open source 가 새롭게 떠올랐다.

Carthage 는 컴파일 전 미리 빌드를 해서 .framework 파일을 만들어놓는다.

따라서 컴파일 속도가 빨라지고 적용하기 simple 하다.

다만, implementation 파일을 볼 수 없다라는 큰 단점이 있다.



Carthage 의 사용

설치


brew install carthage 



사용

라이브러리를 설치할 프로젝트의 Root 에서

Cartfile 을 생성한다.


Cartfile 내부에 내가 필요로 하는 라이브러리 이름과 Version 을 기입해준다.

형식은 아래와 같이 다양하게 사용할 수 있다.



 github "kiwi-bdd/Kiwi"

 git "https://github.com/AFNetworking/AFNetworking.git"    "master"

 git "https://github.com/AFNetworking/AFNetworking.git"    == 3.1.0

 github "Alamofire/Alamofire" ~> 4.4.0



이후 Terminal 에서 carthage update 명령어를 입력하면

.framework 를 만들기 위한 작업을 실행한다. 

(--platform ios 는 생략이 가능하다. ios 만 필요한 것이 아니라면 생략한다.)


만약, 소스를 확인하고 싶다면 carthage checkout 명령어를 입력하면된다.



 carthage update --platform ios

 carthage checkout




그럼 위와 같은 구조가 생성되고,

Checkouts 폴더에는 Cartfile 에 입력한 프레임워크 버전에 맞는 소스들이,

Build 폴더에는 .framework 와 기타파일들이 생성된다.


Carthage 는 CocoaPods 와 달리 .framework 를 직접 추가해줘야한다.

방법은 아래와 같다.


1) Target -> Build Phases -> Link Binary With Libraries 에 + 버튼을 눌러 Carthage/Build/iOS/~.framework 추가

2) Run Script 에 아래 그림과 같이 "/usr/local/bin/carthage copy-frameworks" 추가

3) Input Files 에 Carthage/Build/iOS/~.framework 추가




기타

위 말고도 참조하는 프로젝트들을 git submodule 로 등록할 수도 있고,
(https://github.com/Carthage/Carthage#using-submodules-for-dependencies)

내 dynamic framework 에서 Carthage 를 지원할수도 있다.
(https://github.com/Carthage/Carthage#supporting-carthage-for-your-framework)

많은 다양한 기능들이 있다.
더 자세한 내용은 아래 참고자료를 확인한다.


참고자료

https://github.com/Carthage/Carthage

https://github.com/Carthage/Carthage/blob/9d1a67f47c7231eb2f1c33a719634ec4281b65c1/Documentation/Artifacts.md










공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
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
글 보관함