오늘은 CocoaPods 가 무엇인지 알아보도록 하겠습니다.
개발을 할 때 모든 것을 스스로 만드는 것도 좋지만 필요에 따라 Library 를 써서 시간과 노력을 절약하고 다른 곳에 좀 더 신경을 쓰는 것이 좋을 때도 있을겁니다. 하지만 그렇게 Library 사용 빈도가 점점 늘게되면 나중에는 Library 를 찾거나 관리하는데 시간이 많이 소모되게 됩니다. 그럼 아무래도 Library 를 쓰는 의미가 많이 퇴색되겠죠? 그래서 Xcode 에서 이런 Library 관리를 쉽게 할 수 있도록 도와주는 것이 CocoaPods 입니다.
즉 한마디로 CocoaPods 는 Library 관리 툴입니다. 각종 Libarary 를 설치, 삭제, 그리고 버전 관리를 할 수 있습니다. 개인 프로젝트에서도 충분히 그 역할을 다하지만, 여러 사람이 한 프로젝트를 공유하여 협업할 때 CocoaPods 내의 Library List (Podfile.lock) 파일만 전달해도 모두가 동일한 버전의 라이브러리를 손쉽게 설치할 수 있도록 도와주기도 합니다.
최근에는 Apple 이 공식적으로 지원하고 설치 및 관리가 더 편한 Swift Package Manager 가 등장하긴 했지만 SPM 에는 없는 Library 들이 CocoaPods 로는 존재하는만큼 Library 사용에 있어 절대로 빼놓을 수 없는 것이 CocoaPods 입니다.
그럼 이제 설치부터 사용방법까지 같이 한번 알아보도록 해요.
공식 홈페이지에서 CocoaPods 설치하기
먼저 CocoaPods 공식 홈페이지에 들어가보세요. 접속해서 스크롤을 조금만 내려보면 다음과 같은 페이지를 볼 수 있습니다.
sudo gem install cocoapods
그럴리 없겠지만 만약에 홈페이지에 접속이 안되거나 명령어를 찾지 못하는 분들은 위 코드를 복사해서 붙여넣으셔도 됩니다 ㅎㅎ
자 이렇게 하고 Return 키를 누르면 자동으로 설치가 완료됩니다. 자물쇠 모양이 뜬다면 맥북에 설정해 놓은 비밀번호를 치고 다시 한번 Return 키를 눌러주세요. 참고로 비밀번호 칠 때 아무것도 안쳐지는 것처럼 보일 수 있는데 그냥 치면 됩니다 ㅎㅎ
이렇게 CocoaPods 에 설치를 마쳤어요. 정말 간단했죠?
Homebrew 로 CocoaPods 설치하기
macOS Catalina 부터 CocoaPods 가 정상적으로 설치되지 않는 경우가 있다고 하네요. 저도 방금 맥북이 꼬여서 포맷 후에 CocoaPods 를 설치하는 과정에서 문제가 생겨서 많이 헤매다가 결국 Homebrew 를 통해 설치하는 방법으로 해결했습니다.
오히려 위에서 안내드렸던 방법보다 설치 및 삭제 관리까지 더 용이하기 때문에 저는 개인적으로 이제부터는 항상 Homebrew 를 통해서 설치하게 될 것 같아요.
brew install cocoapods
혹시 아직 Homebrew 를 설치하지 않은 분들은 다음 포스팅을 참고하여 먼저 설치를 진행해 주세요.
프로젝트에 CocoaPods 적용하기
자 그럼 실습을 위해 새로운 Xcode 프로젝트를 시작해볼게요. 프로젝트 생성 후에 해당 폴더 내로 들어가보면 아래와 같은 화면을 볼 수 있을거에요. 폴더 하나와 .xcodeproj 파일이 하나 있네요.
이제 이 곳에 CocoaPods 를 적용해보겠습니다. macOS 터미널에서 방금 전 만든 폴더가 있는 곳으로 들어간 뒤에 다음 명령어를 입력해주세요.
pod init
아래 스크린샷을 보면 처음에는 파인더에서 보았듯이 파일이 딱 2개만 있었는데 CocoaPods 를 프로젝트 폴더에 적용한 뒤에는 Podfile 이라는 새로운 파일이 하나 더 생긴 모습을 볼 수가 있습니다.
Library 적용하기
이렇게 새로운 Library 를 설치할 준비가 되었습니다. 그렇다면 라이브러리는 어떻게 설치할 수 있을까요? 조금 전에 우리가 방문했었던 CocoaPods 홈페이지로 돌아가 검색창에 SnapKit 을 입력해보세요.
이런식으로 결과가 보일거에요. 이중 제일 위의 SnapKit 을 클릭해서 들어가보도록 할게요. 우측에 옅은 회색으로 보이는 숫자는 현재 제가 설치하는 시점에서 가장 최신 버전이 5.0.1 이라는 뜻입니다.
스크롤을 조금만 내려보면 Installation 이라는 문구가 보일거에요. 이곳에 CocoaPods 라고 써져있네요. 딱 봐도 이곳을 살펴보면 될 것 같은 느낌이 들죠? 첫번째로 보이는 명령어는 우리가 이미 진행한 CocoaPods 의 설치법이고 우리에게 지금 필요한 것은 두번째 코드 블럭입니다. 처음보면 뭔가 복잡해보일 수 있지만 우리가 필요한 코드는 밑에서 두번째 줄에 위치한 pod 로 시작하는 명령어 단 한줄이에요. SnapKit 라이브러리의 5.0.0 version 이상을 설치하겠다는 의미입니다.
pod 'SnapKit', '~> 5.0.0'
그럼 조금 전 우리가 생성한 Podfile 을 열어주세요. 기본 텍스트 편집기도 좋고 Vim 도 좋고 그냥 텍스트 에디터 중 어떤 것으로 열어도 괜찮습니다. 저는 VSCode 로 작성해보겠습니다.
이제 SnapKit 을 설치할 준비가 모두 끝났습니다! 파일을 저장하고 닫은 뒤 터미널로 돌아가 설치 명령어를 입력해보도록 할게요 설치니까 당연히 install 이라고 치면되겠죠?
pod install
명령어를 실행하고 나면 다음과 같은 화면이 보이게 됩니다.
그럼 초반에 열어둔 Xcode 프로젝트 파일이 있던 파인더를 다시 한번 봐볼게요.
무언가 파일들이 엄청 많이 생겼어요 ㅎㅎㅎ 이게 전부 다 CocoaPods 관련 파일들이랍니다. Podfile 은 우리가 프로젝트에 설치하기 원하는 라이브러리를 찾아 이름과 버전을 적었던 파일이었던거 기억하시죠? 그럼 다른 파일들은 무엇인지 잠깐 알아보도록 할게요.
먼저 Podfile.lock 파일은 Podfile 에 적혀있던 목록들을 설치하고나면 이 프로젝트에 설치되어 있는 라이브러리의 목록과 버전을 정확하게 보관하고 있는 파일입니다. 우리가 방금 SnapKit 을 설치했을 때는 최신 버전이 5.0.0 대 였지만 먼 훗날 언제가 우리가 이 파일을 누군가에게 전달하고 그 사람이 SnapKit 을 설치할 때는 최신 버전이 6.0.0 대 일 수 있잖아요? 그럼 라이브러리 호환성으로 인한 충돌이 발생할 수 있기 때문에 이런 상황을 방지하고자 CocoaPods 는 Podfile.lock 에 본인이 설치한 라이브러리들의 대한 정보를 정확히 기록해두는 거에요. 즉 이 파일만 공유하면 프로젝트에 설치된 라이브러리의 버전을 협업하는 사람들과 항상 동일하게 유지할 수 있게됩니다.
Pods 폴더는 실제 라이브러리에 관련된 데이터가 들어가있는 곳이에요. 무언가 문제가 생겨 처음부터 다시 설치하고자할 때는 이 폴더를 통째로 삭제하고 pod install 을 통해 라이브러리를 다시 설치할 수 있습니다.
그리고 이전에는 볼 수 없었던 흰색 Xcode 파일이 생겼습니다. 확장자는 .xcworkspace 로 CocoaPods 가 설치된 이후부터는 프로젝트 실행 시 xcodeproj 대신 이 파일을 사용해야 합니다. 기존 xcodeproj 파일과 완전히 동일하고 한쪽을 수정하게되면 다른 한쪽도 수정되지만 xcodeproj 에서는 CocoaPods 로 설치한 라이브러리들을 정상적으로 인식할 수 없으므로 사실상 작업이 불가능합니다. 그러니까 CocoaPods 로 Xcode 프로젝트에 라이브러리를 설치했다? 그럼 .xcworkspace 파일만 사용한다 이렇게 생각해주세요.
그럼 이제 workspace 파일을 실행시켜서 SnapKit 을 import 해보겠습니다.
좌측 Navigator 에 기존에는 볼 수 없었던 새로운 파일들이 많이 생긴 것을 볼 수 있습니다. 우리가 특별히 건들 필요가 없는 파일들이니까 겁먹지 않아도 됩니다 ㅎㅎㅎ 그리고 정상적으로 SnapKit 이 import 된 것도 확인할 수 있습니다. 혹시라도 에러가 발생한다거나하는 문제가 있는 분들은 Xcode 를 완전히 껏다가 다시 한번 실행해주세요.
이렇게 CocoaPods 를 설치하고 간단하게 Library 를 적용하는 방법까지 알아보았습니다. 터미널이랑 웹페이지 등을 왔다갔다 해야되서 조금 복잡해보일 수도 있지만 다른 라이브러리들도 모두 동일한 방식으로 사용가능하니까 조금만 반복해보면 금방 익숙해질 수 있을거에요.