안녕하세요, dvHuni입니다!!
여름을 기다려왔지만 너무 살인적인 날씨네요 🥵
더위에 적응하느라 포스팅이 늦어진점.... 양해부탁드립니다 🤛🤛🤛
오늘은 iOS 개발에서 주로 사용되는 Dependency Management Tool에 대해 알아보고 각각의 특징을 정리해두려합니다.
이번 포스팅도 힘차게 출발해보겠습니다 아자아자!!
먼저 제가 헷갈려 했던 개념부터 정리하고 가려고 합니다! (아마 다들 헷갈려했을걸?)
Library는 무엇이고 Framwork는 무엇이냐! 어떤 차이가 있냐!!!!!
제어반전
❗️iOS에서의 예시
자 그렇다면 이제 본론으로 넘어와서... Dependecy Management Tool인데..
Dependency는 뭐냐 ? 라는 의문이 생길 수 있기 때문에 살짝 짚고 넘어가도록 하겠습니다.
Dependency란 External Standalone Program Module입니다.
즉, 외부에 동작하는 하나의 자체적인 모듈입니다.
이러한 모듈은 Library가 될 수 있고, Framework가 될 수 있겟죠
자 그럼 이제부터는 자주 사용되는 Management Tool의 종류와 각각의 특징에 대해 알아보겠습니다~!
🕺🕺
cocoapods는 ios의 첫번째 공식 DM이며, 이는 가장 넓게 적용되어있습니다.
가상적으로 모든 third party library는 이것을 지원합니다.
cocoapods은 set up이 간단합니다.
간단하게 Podfile을 만들어 dependency 리스트를 작성하고, pod install 명령어를 통해 프로젝트에 삽입 할 수 있습니다.
cocoapods은 workspace라는 새로운 파일을 만들고, 그 안에 기존의 프로젝트 파일과 조직화된 dependency들을 포함시켜줍니다.
이것은 장점이자 단점이 됩니다.
set up이 간단하지만, 수정된 프로젝트 파일을 사용자는 알지 못합니다.
또한 cocoapods은 중앙집중식이며, 모든 dependency들은 중앙 repo에 저장됩니다.
이는 어떠한 이유로 중앙 repo가 중단된다면, 프로젝트를 컴파일 할 수 없는 상태가 될 수 있다는것을 의미합니다.
장점
단점
carthage(카르타고)는 비중앙 집중 방식입니다.
현재 몇가지의 dependency source를 지원합니다.(git repo, public https 등)
set up은 cocoa pod과 비슷하다. 사용자가 cartfile을 생성하고, dependency를 추가하고 carthage update를 실행합니다.
체크아웃 후 dependency를 구성한 후 Xcode에 바이너리를 추가 할 수 있도록 남겨둡니다.
Xcode가 업데이트 되는 경우 carthage update를 해줘야 하기 때문에, 라이브러리는 항상 최신으로 유지해야 합니다.
장점
단점
Swift에서 공식적으로 제공한는 Dependency Management Tool입니다.
Xcode 12로 업데이트 되면서 Xcode에 포함되어 관심을 받고있습니다.
package manager 역할 뿐 아니라 Build와 Test 도구로써의 역할도 수행 가능합니다.
SPM은 xcode에 package를 생성하지 않습니다.
장점
단점
최근 WWDC21에서 SPM에 대한 업데이트가 있었습니다!
해당 내용도 정리해서 포스팅 하겠습니다!
오늘은 항상 헷갈려 했던 Library와 Framework의 차이점에 대해 알아보았고,
iOS의 Library를 관리하는 Depedency Manager의 종류와 각각의 특징에 대해 정리해보았습니다.
저는 CocoaPod을 주로 사용했습니다만,
시간이 지나면 SPM을 조금 더 중점적으로 사용하게 될 것 같다고 생각합니다. (Apple에서 관리하고 있으니까 ?!)
새로운 프로젝트를 설계할 때 프로젝트의 특성에 맞게 Dependecy Manager를 선택하시면 좋을 것 같습니다!
이상으로 이번 포스트를 마치겠습니다.
틀린부분이 있다면 언제든지 지적 해주시면 정말 감사하겠습니다 !! 🥺
읽어주셔서 감사합니다!! 🙇♂️