Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- UICollectionView
- combine
- Clean Code
- clean architecture
- collectionview
- uitableview
- MVVM
- UITextView
- Human interface guide
- ribs
- 스위프트
- HIG
- map
- Xcode
- Refactoring
- 클린 코드
- Observable
- 애니메이션
- tableView
- uiscrollview
- RxCocoa
- rxswift
- 리펙토링
- Protocol
- 리펙터링
- swiftUI
- swift documentation
- SWIFT
- 리팩토링
- ios
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] cocoapods 개념, podfile.lock, gemfile.lock, bundle exec pod 본문
Git, CocoaPods, Xcode, Shell
[iOS - swift] cocoapods 개념, podfile.lock, gemfile.lock, bundle exec pod
jake-kim 2021. 2. 20. 00:46Cocoapods이란
- 일반적으로 오픈소스를 관리하는 방법에는 아래 방법 존재, 두 가지 단점을 극복한 오픈소스 관리하는 cocoapods
- 압축 파일로 소스를 받아서 직접 프로젝트에 넣는 방법 - 버전 업데이트가 어려운 단점
- 개발하고 있는 저장소에 오픈소스 저장소를 링크시켜 프로젝트에 삽입 - circular dependency 문제 (앱에서 A라이브러리 사용하고 있을 때 A라는 오픈소스 저장소를 또다시 링크시키면 충돌) - Cocoapods의 장점
- 라이브러리 버전 관리
- 라이브러리 의존성 체크
- 지원 OS버전 설정에 간편화 - Cocoapods은 ruby기반으로 제작
Cocoa pods 지원 버전 정의
- pod ''myFramework', '0.0.1' --> 0.0.1버전
- pod 'myFramework' , '= 0.0.1' --> 0.0.1버전
- pod 'myFramework' , '> 0.0.1' --> 0.0.1버전보다 큰 버전
- pod 'myFramework' , '>= 0.0.1'
- pod 'myFramework' , '~> 0.1.2' --> 0.1.2이상, 0.2 미만 버전
- pod 'myFramework' , '~> 0.0.1-beta.0' --> 베타는 0.1.3 / 릴리즈버전은 0.2미만
Cocoapods 명령어로 보는 개념
- $ pod install: podfile.lock에 명시된 버전 정보를 가지고 새로운 pod을 다운받고 설치
- 각 pod마다 설치된 버전을 podfile.lock에 기록
- podfile.lock에 명시된 버전이 없으면 podfile에 명시된 버전 조건으로 검색하여 다운 - $ pod update: podfile.lock을 참조하지 않고 podfile에 명시된 버전 조건으로 검색하여 다운
- pod update는 결국 podfile.lock을 새로 만드는것 - $ pod repo update: /Users/{사용자이름}/.cocoapods/repos 에 있는 모든 podspec 파일을 업데이트
- podspec이란, 해당 프레임워크에 관한 버전과 주소 명시
// podspec
spec.source = { :git => 'https://github.com/Alamofire/Alamofire.git', :tag => 'v3.1.1' }
podfile.lock 개념
- pod들의 버전을 기록하여, 팀간 동일한 버전을 공유할 수 있도록 하는 개념
- podfile.lock 구성
PODS:
- AnyFormatKit (2.4.0)
...
DEPENDENCIES:
- AnyFormatKit
...
SPEC REPOS:
https://github.com/CocoaPods/Specs.git:
- AnyFormatKit
...
SPEC CHECKSUMS:
- AnyFormatKit: 2ca2ad3f6fa0f6862a650342141d2bcaa42e9186
...
PODFILE CHECKSUM: a31069993ade597ec1b7d40966cbea6d3ba29cb9
COCOAPODS: 1.10.1
- PODS: 프레임워크와 버전 명시
- DEPENDENCIES: 의존성을 구분하기 위하여 프레임워크들이 나열
- Moya에서 내부적으로 Alamofire를 쓰는 경우, DEPENDEICES에는 Moya만 존재하고 Alamofire는 나열되지 않음 - SPEC REPOS: 프레임워크들의 다운받는 주소 명시
- SPEC CHECKSUMS: pod 버전에 관한 유일성을 보증하는 값 (pod 버전에 하나라도 변화가 생기면 CHECKSUM값 변함)
- SPEC CHECKSUMS이 diff로 뜬다는 의미 -> pod 프레임워크중에 버전이 바뀌었다는 의미
- 버전이 바뀐것을 1.1.1이런 숫자로 판단하는 것이 아닌 Checksum값으로 확인하는 것 - PODFILE CHECKSUM: podfile에 관해 유일성을 보증하는 값
- COCOAPODS: 코코아팟 버전
"Bundle exec pod install"과 "pod install"
- Bundle exec를 사용한다는 것은 gemfile을 사용한다는 것이며, gemfile도 podfile과 동일한 개념
- gemfile.lock파일이 존재하며, 이곳에는 cocoapod에관한 버전이 명시
- Bundle exec pod install을 하게되면 팀원끼리 동일한 cocoapods버전을 사용할 수 있게끔 함
"bundle exec pod update"와 "pod update"
- pod update는 로컬에 설치된 cocoapods버전을 가지고 podfile.lock파일을 참고하지 않으면서 pod 설치
- bundle exec pod update는 gemfile.lock파일에 참고된 cocoapods파일의 버전 기준으로, podfile.lock파일을 참고하지 않으면서 pod 설치
-> podfile.lock을 업데이트하고 싶을 때 가장 안전한 방법은 bundle exec pod update (팀원들간 동일한 cocoa pod 버전으로 podfile.lock 갱신)
-> pod 정보를 설치하고 싶을 때 가장 안전한 방법은 bundle exec pod install (팀원들간 동일한 cocoa pod 버전으로 pod 설치)
* 참고:
guides.cocoapods.org/using/pod-install-vs-update.html
d2.naver.com/helloworld/444849
'Git, CocoaPods, Xcode, Shell' 카테고리의 다른 글
[Git] 특정 Commit 삭제 방법 (rebase interactive, revert) (0) | 2021.03.08 |
---|---|
[git] tag (Release) 사용 방법 (terminal, source tree, remote 3가지 방법) (0) | 2021.02.27 |
[git] SSH키 생성 및 git 리모트 저장소에 SSH로 접속 (0) | 2021.02.11 |
[git] git핵심 git remote, push, clone, fetch, merge, rebase (0) | 2020.12.30 |
ruby, gem install bundler 에러 "(Gem::FilePermissionError)", global로 설정하여 해결 (0) | 2020.12.29 |
Comments