iOS | 오픈 소스 라이브러리 사용하기. Carthage, Cocoapods, Swift Package Manager

iOS 개발을 시작하면 @@앱에도 ##앱에도 있는 이 버튼 한 번 사용해보고 싶다 라는 생각을 하게됩니다.

도입방법은 제로부터 개발하거나
이미 흔한 버튼이라면 오픈소스 라이브러리를 찾아서 도입하는 방법 두 가지가 있을 것입니다.


후자의 분들을 위해,
iOS 개발에서 Library를 Xcode project 에 설치하고 사용하는 방법을 대해 알아보겠습니다.


iOS 개발에서의 패키지 관리자

iOS 의 오폰스소 라이브러리를 사용하기 위해서는
사용하고자 하는 라이브러리를 설치해주고 버전을 관리해줄 패키지 관리자가 필요합니다.

iOS에서 주로 사용되는 패키지 관리자의 종류에는 3가지가 있습니다.

1. Cocoapods
2. Carhage
3. Swift Package Manager(SPM)


각각의 특징을 짤막하게 적어보자면
가장 오래된 패키지 관리자가 Cocoapods으로 Carthage를 제공하지 않는 라이브러리는 있어도 Cocoapods을 제공하지 않는 오픈소스 라이브러리는 없을 정도입니다.
Carthage는 Swift 세대에 등장한 라이브러리로 요즘 세상의 90년대생과 같은 존재감을 나타내고 있습니다.
Swift Package Manager는 가장 최근, 2019년부터 Xcode에서 사용할 수 있게 된 패키지 관리자입니다.

Android에서의 Gradle, Ruby에서의 Gem와 같은 존재인 세 패키지 관리자 친구들 입니다.

세 친구들의 특징과 각각의 설치방법을 보시러 가보시죠 ! 고고씽 ~ !




Cocoapods

https://cocoapods.org/

가장 큰 형님같은 존재의 Cocoapods 입니다.

2011년도. 거의 10년 전부터 사용된 패키지 관리자입니다.

Ruby 로 작성된 Gem으로 Ruby의 rbenv와 닮은 구석이 참 많습니다.
(rbenv를 활용해보신 분이라면 가장 편하게 사용하실 수 있는 패키지 관리자입니다.)

Cocoa 프레임워크와 관련성 있는거 아니야 ! 라고 저도 조금 의심이 들었었지만,
전혀 관련은 없답니다 🙄

설치하기 & pod 관리하기

iOS | Cocoapods 설치. 사용하기. 글을 참고해주세용



Carthage

https://github.com/Carthage/Carthage

Swift 의 등장과 비슷하게 등장한 패키지 매니저입니다.

Cocoapods 자체의 버전관리가 골치아픈 반면, 크게 자체의 버전에 문제가 없다는 것이 큰 장점이죠.

오픈소스 라이브러리를 아예 다운받아서 사용하는 개념이라
꽤 많은 오픈소스 라이브러리를 한 번에 설치할때 시간이 가장 많이 걸리는 것이 단점인 패키지 매니저랍니다.

대신, 한 번 다운로드 받은 라이브러리는 공유만 하면 다른 로컬 환경에서도 스크립트 실행없이 실행 가능하답니다.
팀 프로젝트에서는 A 팀원이 필요한 라이브러리들이 모두 설치된 상태라면 B, C 팀원에게 공유할 수 있어요.

이걸 활용해서 AWS 의 s3에 다운로드한 라이브러리를
모두 설치해서 사용할 수 있게 만든 Rome 이라는 것도 있어요.
https://github.com/tmspzz/Rome
AWS 구축, CI 환경 구축 등 여러가지 필요한게 많지만
궁금하신 분들은 한번 다른 블로그 글들 보셔도 좋을것 같아용 ㅎㅎ


사실 Swift Package Manager 가 등장한 이후 지원을 하지 않는 오픈소스 라이브러리가 늘고 있어요 …. 😥
그래도 ! 반대로 Carthage 만 지원하고 있는 라이브러리들도 있으니 모르면 안되겠죠


설치하기

iOS | Carthage 설치. 사용하기. 👈 글을 참고부탁드려요 ~ !



Swift Package Manager

⚠️Xcode 11 부터 사용가능.

드디어 애플에서 공식으로 지원하고 Xcode 에 내장된 패키지 매니저가 등장했습니다 😭!!!!!!
3가지 방법 중 가장 간단하고 ! 최신 방법이에요 !!!!!

최신이니만큼 아직 불안정한 부분이 있어서 ㅠㅠ 버그가 꽤 있다느 얘기들이 Twitter 에 올라오고 있지만
점점 발전하는 애플을 기대해봅니다 🙏

다른 플랫폼에서 비슷한 패키지 매니저를 찾는다면, Android 의 Gradle 과 비슷한거 같아요.

나온지 얼마되지않아서 최근에 나오거나 자주 업데이트되고 있어
서포트하하고 있는 라이브러리에서만 사용할 수 있어요 😣

Alamofire처럼 웬만한 iOS 개발자들이 한 번쯤은 들어본적 있는 라이브러리는 대응하고 있으니 한심하셔도 된답니다 ~ !

설치하기

iOS | Swift Package Manager 설치. 사용하기. 를 참고해주세요 !



iOS Open Source Library 추천

https://github.com/vsouza/awesome-ios
👆UI, Networking 등 다양한 카테고리별 오픈소스 라이브러리가 모여져 있답니다.

https://github.com/cjwirth/awesome-ios-ui
👆UI 에서 꽤나 활용된다는 오픈소스 라이브러리가 모여져 있답니다.

그리고 unnnyong의 pick들이자 웬만하면 누구나 안다는 라이브러리들을 소개하고자 합니다 👩‍🚀

Network
– Alamofire, https://github.com/Alamofire/Alamofire
– AFNetworking, https://github.com/AFNetworking/AFNetworking

Code Style
– SwiftLint, https://github.com/realm/SwiftLint

UI Animation
– Lottie, https://github.com/airbnb/lottie-ios

UI
– Toast-Swift, https://github.com/scalessec/Toast-Swift



혹시라도 추천하시는 다른 라이브러리들이 있으면 댓글로 꼭 알려주세용




똑같은 라이브러리라도 Cocoapods 에서는 문제없이 실행되지만,
Carthage에서는 No such a module 의 에러가 발생할 때도 있어요 😅

한 가지 패키지매니저만 대응하고 있는 라이브러리도 있답니다.

사용하고자 하는 프로젝트의 성격과 앞으로의 방향성에 따라 어떤 패키지매니저를 사용해서
프로젝트를 가꾸어나갈 지는 저희들 개발자들의 선택인 것 같아요.

전 회사에서는 한가지 라이브러리를 도입할 때
어느 패키지 매니저를 써야하는지 꽤나 토론했었던 적도 있었네요.
한 번쯤 고민해보는 것도 좋은 것 같아요 ~


혹시 글 내용에서 틀린 내용이나 추가하고 싶으신 내용있으시다면 언제든지 댓글이나 메일 주세요 🙏
오늘도 즐거운 iOS 개발 되세요 ~~~~~~ 🙋🏻‍♀️

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중