-
iOS - Cocoapods 기초Programming/Library 2021. 11. 10. 14:37
안녕하세요. BeePeach입니다 :)
CocoaPods란 외부 라이브러리를 관리하기 쉽도록 도와주는 의존성 관리 도구입니다.
의존성 관리 도구에는 CocoaPods만 있는 게 아니라 Carthage, Swift Package Manger 등 다른 관리 도구도 존재합니다.
의존성 관리도구는 왜 사용할까요??
다른 개발자분들이 작성해놓은 코드를 사용하려고 할 때 해당 코드를 복사해서 내 프로젝트에 붙여 넣기 한 뒤에 사용해도 되지만 방대한 양의 코드들을 모두 복사해 오는 것은 힘든 작업입니다.
만약 모두 복사해왔다고해도 버전업이 되어서 변경사항이 존재한다면...?
그 부분만 찾아서 또 변경한다고하면 없느니만 못하겠죠?
의존성 관리도구를 사용하면 외부 라이브러리를 손쉽게 관리하고 사용할 수 있게 됩니다.
그럼 설치방법과 사용방법에 대해서 같이 공부해보도록 하겠습니다.
설치 방법
sudo gem install cocoapods
Terminal에서 해당 명령어를 실행하면 cocoapods를 설치할 수 있습니다.
사용 방법
먼저 terminal에서 CocoaPods를 설치할 프로젝트로 이동합니다.
프로젝트 루트 디렉토리에서 pod init을 입력합니다.
그럼 해당 디렉토리에 Podfile이 생성됩니다.
Podfile에는 이런 식으로 적혀있습니다.
#이 들어간 것은 주석입니다.
platform : ios, 'version' : 플랫폼과 버전에 맞춰서 라이브러리를 설치합니다.
target 'Project Target Name' do ... end : 이 코드 안에 설치할 라이브러리를 작성합니다.
use_frameworks! : cocoaPods에게 동적 라이브러리를 사용한다고 명시할 때 사용합니다. Xcode 9, CocoaPods 1.5.0부터 Swift도 정적 라이브러리를 제공하므로 굳이 사용하지 않아도 됩니다.
자세한 내용은 여기를 참고해주세요.
일단 다른 것은 건들지 않고 사용해볼 라이브러리를 작성했습니다.
pod 'LibraryName'을 적어주면 됩니다.
내가 원하는 라이브러리를 추가하고 싶다면 해당 라이브러리 github로 가서 어떻게 추가해야 하는지 확인하는 게 좋습니다.
라이브러리의 버전을 명시하고 싶다면 '~> 6.1'과 같이 뒤에 추가시켜주면 됩니다.
~> 6.1의 의미는 6.1 이상 버전부터 7.0 미만 버전을 사용한다고 명시하는 것입니다.
버전에 관한 상세 내용은 공식문서를 참고해주세요.
Podfile을 작성하고 pod install을 입력합니다.
그럼 라이브러리 설치가 완료되고 .xcworkspace, Pods, Podfile.lock이 생성됩니다.
노란색으로 나타난 경고는 platform과 버전을 명시하지 않았기 때문입니다.
#platform : ios, '9.0'에서 주석을 제거하고 버전을 입력하면 해당 경고는 사라집니다.
platform을 명시해주니까 경고가 사라진 것을 확인할 수 있습니다.
이제 프로젝트를 열때 .xocdeproj 파일이 아니라 흰 아이콘인 .xcworkspace로 열어줘야 합니다.
원하는 라이브러리를 import하면 추가가 되는 것을 확인할 수 있습니다.
Podfile.lock
Podfile.lock은 어떤 역할을 하는 것일까요??
pod install 명령어를 실행하게 되면 라이브러리를 설치하고 Podfile.lock에 각 라이브러리의 버전을 기록하게 됩니다.
Podfile.lock의 기능은 설치된 라이브러리의 버전을 기록하여 팀원들이 모두 동일한 pod 버전을 사용하도록 해주는 기능을 합니다.
위 사진에서 PODS:를 보게 되면 설치된 라이브러리와 버전이 기록되어있습니다.
아래 CHECKSUMS는 Podfile.lock의 유일성을 보장해주는 값입니다.
만약 버전이 변경되게 되면 CHECKSUMS도 변경됩니다.
pod install을 실행하면 Podfile.lock에 저장된 라이브러리 버전을 설치하게 됩니다.
만약 해당 라이브러리가 업데이트가 되어서 새로운 버전이 나와도 pod install을 실행하면 Podfile.lock에 명시된 버전만 설치하게 됩니다.
참고자료
https://stackoverflow.com/questions/41210249/why-do-we-use-use-frameworks-in-cocoapods
728x90'Programming > Library' 카테고리의 다른 글
Library - Kingfisher 사용해보기 (0) 2022.03.14 Library - Lottie 사용해보기 (0) 2022.03.14 Library - SnapKit 사용해보기 (0) 2022.03.11 Library - Then 사용해보기 (0) 2022.03.11