티스토리 뷰

반응형

RxSwift 는 5가지 방법으로 이 라이브러리를 사용할 수 있다고 가이드하고 있습니다. 

 

1. Cocoapod

2. Carthage

3. SPM

4. xcframework

5. git submodule

 

 

[1] 제공하는 쪽 

써드파티 라이브러리를 제공하는 입장에서 각각을 지원할 수 있는 가이드에 대한 링크를 정리해둡니다. 

(저는 Cocoapod과 SPM은 예전에 해봐서 카르타고, xcframework 를 한번 해봐야겠어요)

 

1. Cocoapod 지원하기

https://guides.cocoapods.org/making/making-a-cocoapod.html

 

[ static vs dynamic ]

사용하는 쪽에서 podfile에 use_frameworks! 을 안써주느냐 써주느냐 로

static 또는 dynamic 라이브러리를 선택 가능합니다. 

 

2. Carthage 지원하기 

 

https://github.com/Carthage/Carthage#supporting-carthage-for-your-framework

 

[ static vs dynamic ]

사용하는 쪽에서 script에 MACH_O_TYPE 을 명시해서

static 또는 dynamic 라이브러리를 선택 가능합니다. 

 

 

3. SPM 지원하기 

https://github.com/apple/swift-package-manager/blob/main/Documentation/Usage.md#creating-a-package

 

[ static vs dynamic ]

사용하는 쪽에서 static과 dynamic 라이브러리 중 어느 것을 쓸 지 선택할 수 있도록

 

 

Package.swift에 dynamic 타입도 추가해줍니다. 

 

https://github.com/ReactiveX/RxSwift/blob/main/Package.swift

 

참고로 type 주석에는 이렇게 적혀있어요

The optional type of the library that's used to determine how to link to the library.
Leave this parameter unspecified to let the Swift Package Manager choose between static or dynamic linking (recommended).
If you don't support both linkage types, use `.static` or `.dynamic` for this parameter. 

 

 

4. xcframework 지원하기 

WWDC 2019 - Binary Frameworks in Swift 에서 xcframework를 만드는 법, 버전 관리법 등을 잘 설명해줍니다.

RxSwift 는 버전 6 이상 부터 깃헙 릴리즈 노트에 xcframework를 첨부하고 있습니다. 

 

참고로 xcframework 이전에는 Universal Framework 를 써줬다고 합니다. 

Why XCFrameworks Matter 글을 읽으면 WWDC 에서 사람들이 왜 박수치는 지 알 수 있어요 ㅎㅎ,, 

 

 

[ static vs dynamic ]

사용하는 쪽에서 xcframework를 다운받아서 여기 끌어다 놓고

 

 

옵션을 정할 수 있습니다. 

 

 

- Do not embed : static framework (복사)
- Embed : dynamic framework (참조)

 

라고 합니다! 


공식문서는 못찾았고 두 블로그를 봤는데, 제가 잘 이해했는 지 모르겠네요 @_@

https://holyswift.app/frameworks-embed-or-not-embed-thats-the-question

https://ios-development.tistory.com/281 

 

 

5. git submodule

딱히 해줄 것 없습니다~ 

 

[ static vs dynamic ]

xcode project 를 끌어온 후,  Build Setting에 가서 Mach-O Type을 바꾸면 되지 않을까요..? (확인안해봄)

 

 

 

[2] 사용하는 쪽

그럼 해당 라이브러리를 사용하는 입장에서는 어떤 방법을 사용해야할까요?

Cocoapod vs Carthage vs SPM 은 검색하면 흔히 나오는 내용이고,, 

static vs dynamic 라이브러리는 Overview of Dynamic Libraries 문서를 보고  dynamic 쓰는게 더 좋다고 알고 있습니다. 

 

근데 xcframework 랑 git submodule 은 어떤 상황에서 어떤 장점이 있어서 쓰시는 지 잘모르겠네요ㅠㅠ 

'종속성 관리 도구를 안써도 된다' 이런 장점은 약한 것 같은데,,,

쓰는 팀이 있으니까 Rx에서 계속 제공하는 것 같은데,,,  (특히 xcframework)

 

좀 더 찾아봐야겠습니다.❕

 

 

 

 

 

 

 

 

반응형
댓글