-
반응형
cocoapod은 거의 모든 iOS 프로젝트 에서 사용하는 package관리 툴이다. 이제 SwiftPackageManager로 많이 넘어가긴 했지만, 여전히 많이 쓰이고 있고 Flutter같은 멀티 플랫폼 툴에서도 결국 사용할수 밖에 없는 툴이다.
Cocoapod은 Ruby위에서 돌아간다.
Ruby는 Mac에 기본적으로 깔려있지만, 간혹 버전이 달라서 팀원들이랑 꼬이는 경우가 있다. 이건 asdf라는 툴을 이용해서 ruby 버전을 통일할수 있는데, 다른 포스팅을 참고
이 글에서는 ruby bundle과 cocoapod을 설치하는 과정에서 사용하는 명령어들의 의미를 세세하게 살펴보도록 한다.
bundle install
Ruby 는 bundle install 이라는 명령어를 통해서 Gemfile에 적힌 패키지를 설치한다.
Gemfile 은 사용자가 직접 수정하는 파일이다. Gemfile 예시
source "https://rubygems.org" gem "fastlane" gem "cocoapods", '1.12.1' plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile') eval_gemfile(plugins_path) if File.exist?(plugins_path)
처음 install을 하는 것이라면 Gemfile.lock 이라는 파일이 생긴다. 이건 auto generate되는 것이고 사용자가 수정하는건 아니다.
bundle install은 기본적으로 Gemfile.lock에 정의된 파일을 기준으로 설치를 진행한다. 만약 Gemfile 을 수정 하지 않았다면 Gemfile.lock 이 변경되지 않는다.
(Gemfile에 새로운 gem을 추가했다면 변경됨)
bundle update
bundle update는 Gemfile을 기준으로, 거기에 적힌 constraint에 맞게 패키지를 업데이트 한다.
만약 새로운 패키지가 나왔다면 버전이 업데이트되고, 업데이트 되어서 설치된 버전 기준으로Gemfile.lock 파일도 함께 업데이트 된다.
Gemfile을 수정하지 않았더라도 Gemfile.lock 파일이 변경될 가능성이 있다.
pod install / pod update
pod도 bundle 명령어와 비슷하다.
install 명령어는
- 새로운 pod을 추가 했거나
- 처음 pod install을 실행하거나
- pod 변경 없이 podfile.lock기준으로 설치하고자 할 때 사용한다.
update는 Podfile 기준으로 기존에 설치된 패키지를 업데이트하고 lock파일도 함께 업데이트 한다.
Podfile.lock에 적힌 버전은 일단 무시한다.
pod repo update
요건 또 조금 다른 개념인데 .. local cocoapod spec repository를 업데이트 하는 명령어이다.
우리가 터미널에서 pod install/update를 할때 매번 인터넷을 통해서 repo를 불러오는게 아니라, 로컬에 있는 pod repo에서 끌어오는 것이다. 이 spec repository를 업데이트 한다는 의미이다.
bundle exec pod install, bundle exec pod update
앞에 bundle exec이 붙는 것은 Gemfile.lock 파일에 정의 된 코코아팟 버전을 사용해서 pod install, pod update를 실행하겠다는 의미이다. 그러므로 꼭 붙여주는 것이 좋습니다.
반응형'개발' 카테고리의 다른 글
[Flutter] Fastlane 이용해서 배포 자동화 하기 #3 Android 설정 (1) 2023.11.24 Xcode 15 업데이트 후 Flutter project 에서 ARC Semantic Issue 나는 것 해결 (1) 2023.11.24 Realm Encryption 사용시 Encryption Export Regulations 설정하기 (1) 2023.11.17 [AppStore] access to cloud-managed distribution certificates 문제 해결 (0) 2023.08.01 [Flutter] Fastlane 이용해서 배포 자동화 하기 #2 Flutter 설정 (0) 2023.06.24 댓글