iOS 라이브러리를 관리하는 CocoaPods Tip정보 모음입니다.
CocoaPods를 감사하게 사용하고 있습니다. 😁
사용하면서 유용했던 정보들을 잘 정리해 두고 싶어서 작성했습니다.
계속 잘 정리해서 처음 사용하시는 분들 혹은 익숙하지 않은 분들에게 도움이 될 수 있도록 하겠습니다. 😊
CocoaPods는 Swift 및 Objective-C 프로젝트의 라이브러리 관리자입니다. 45,000 개가 넘는 라이브러리가 있으며 300 만 개가 넘는 App에 사용됩니다. CocoaPod는 프로젝트에서 편리하게 라이브러리를 사용하는 데 도움을 줄 것입니다.
단, 너무 무분별할 라이브러리 사용은 지양합시다.
자신이 감당할 수 있는 수준으로 사용합시다.
swift는 버전이 계속 변하고 있습니다. 만약 라이브러리 개발하신 분께서 업데이트가 늦거나 업데이트를 하지 않는 상황이 왔을 때, 그걸 대응할 자신이 있어야겠죠?
터미널 명령어
#1-6 오직 한개의 원하는 라이브러리만 업데이트 하기
Podfile 작성 팁
#2-3 git의 repository에서 직접 가져오기
#2-5 로컬 폴더에 라이브러리 소스를 다운받고 pods 라이브러리 연결하기
코코아팟츠에 자신의 라이브러리 등록하기
Ruby gem이 필요합니다. CocoaPods는 Ruby로 제작되었으며 macOS에서 사용할 수있는 기본 Ruby로 설치할 수 있습니다.
cocoapods 를 설치합니다.
$ sudo gem install cocoapods
설치 후에 setup을 실행해서 CocoaPods master repo 를 설정합니다.
$ pod setup
기본적인 사용을 위한 설정을 완료했습니다. 이제 xcode에 라이브러리 설치가 가능합니다. 초기 프로젝트, Pods 최신버전, 베타버전, 버전 변경은 아래에서 확인해주세요.
$ cd 프로젝트경로
$ pod init
target '프로젝트명' do
# 스위프트를 사용하지 않고 동적 라이브러리를 이용하지 않는다면 아래 구문을 주석처리 합니다
use_frameworks!
# 대표적인 네트워크 라이브러리입니다.
pod 'Alamofire'
# 스넵킷이라는 오토레이아웃을 소스 코드 구현을 용이하게 해주는 라이브러리입니다.
pod 'SnapKit'
end
$ pod search 라이브러리명
$ pod install
$ . 프로젝트명.xcworkspace
GUI에서 Podfile 관리와 Pod Install, Update가 가능합니다.
이것은 제가 사용하는 방법입니다.
삭제 전 프로젝트의 폴더 | 삭제 전 프로젝트 파일의 패키지 내용 |
---|---|
휴지통으로~ |
삭제 후 프로젝트의 폴더 | 삭제 후 프로젝트 파일의 패키지 내용 |
---|---|
$ pod install
or
$ pod update
.gitignore 파일을 생성해 두면 편리합니다.
.gitignore 파일이란 Git 버전 관리에서 제외할 파일 목록을 지정하는 파일입니다.
. 표시는 숨김파일을 의미합니다.
Finder에서 아래 단축키를 사용하면 숨겨진 파일이 보여집니다.
단축키 : shift +command + .
git 파일이 있는 최상위 디렉토리에서 터미널을 실행시켜 내용을 작성합니다.
$ touch .gitignore
$ ls -a
$ vi .gitignore
내용의 셈플을 샘플 .gitignore은 아래와 같습니다.
# Pods 관련 (pod install or pod update 해서 자동 생성된 파일들)
Podfile.lock
JWSCocoapodsTips.xcworkspace
JWSCocoapodsTips/Pods/
# xcodeproj 안의 불필요파일
*.xcuserstate
xcschememanagement.plist
contents.xcworkspacedata
# 필요한 내용 더 추가
그리고 이런설정을 쉽게 할 수 있는 킹왕짱 사이트가 있습니다.
그것은 깃이그노어 닷 아이오를 웹 주소에 치시면 됩니다.
버전을 확인합니다.
$ pod —-version
Gems 의 상세한 버전을 원할 경우 입니다.
$ gem which cocoapods
최신버전으로 설치합니다.
$ [sudo] gem install cocoapods --pre
제거하고 설치를 하려면 아래와 같이 하면 됩니다.
$ [sudo] gem uninstall cocoapods
$ [sudo] gem install cocoapods -v 1.3.1
pods가 설치되어있고, 바로 버전을 바꾸고 싶다면!
$ pod _1.3.1_ setup
Pod 설정 정보가 보고 싶다면
$ pod env
$ cd 프로젝트경로
$ pod env
Podfile.lock 기준으로 업데이트 하느냐 마느냐의 차이입니다.
둘다 기본적으로 Podfile 기준으로 진행합니다.
Podfile 에 작성할 때는 pod 'MyPod', '~>1.2' 제한을 두어서 항상 자동 최신으로 자동업데이트가 되지 않도록 해두도록 노력하고, update 보다는 install 을 우선 사용합니다.
그리고 필요하면 아래의 1-6에서 개별 업데이트도 가능하니, 라이브러리별 업데이트만 사용하기도 합니다.
업데이트 다음에 라이브러리 명을 적습니다.
$ pod update [PODNAME]
ex)
$ pod update AFNetworking
아래와 같이 def-end 를 이용해서 사전 정의된 값을 가져와서 사용할 수 있습니다.
def network_pods
# 대표적인 네트워크 라이브러리입니다.
pod 'Alamofire'
# Alamofire를 사용할 때 상단 상태 바에 통신중일때 기본 인디케이터가 나타나도록 합니다.
pod 'AlamofireNetworkActivityIndicator'
# Alamofire를 이용할 때 로그를 쉽게 볼 수 있습니다.
pod 'AlamofireActivityLogger'
end
def core_pods
# 스넵킷이라는 오토레이아웃을 소스 코드 구현을 용이하게 해주는 라이브러리입니다.
pod 'SnapKit'
# 유용한 날짜 관련 라이브러리입니다.
pod 'SwiftDate'
end
target '프로젝트명' do
# 스위프트를 사용하지 않고 동적 라이브러리를 이용하지 않는다면 아래 구문을 주석처리 합니다
use_frameworks!
# 이렇게 위에 정의된 내용을 사용합니다.
network_pods
core_pods
end
Debugging-에서만-사용하기
pod '라이브러리명', :configurations => ['Debug']
or 다른 옵션도 가능하죠.
pod '라이브러리명', '~> 4.0', :configurations => ['Debug']
git에 직접 접근해서 가져오기
pod '라이브러리명', :git => 'https://github.com/라이브러리경로'
or 그 안의 브런치의 최신 라이브러리가 필요하다면
pod '라이브러리명', :git => 'https://github.com/라이브러리경로', :branch => '브런치명'
or tag 정보까지의 라이브러리가 필요하다면?
pod '라이브러리명', :git => 'https://github.com/라이브러리경로', :tag => '1.0.0'
or 원하는 commit된 부분까지가 필요하다면?
pod '라이브러리명', :git => 'https://github.com/라이브러리경로', :commit => '0e380832ab'
Podfile에서 "inhibit_all_warnings!" 만 추가하면 간단하게 경고가 사라집니다.
target '프로젝트명' do
# 스위프트를 사용하지 않고 동적 라이브러리를 이용하지 않는다면 아래 구문을 주석처리 합니다
use_frameworks!
# xcode에서 pods의 모든 프로젝트 경고 없애기
inhibit_all_warnings!
end
or 라이브러리 별로(개별로).., 원하는 라이브러리만 경고를 사라지게 하고 싶다면?
pod '라이브러리명', :inhibit_warnings => true
$ pod install
빌드는 워크스페이스 파일을 실행해서 xcode에서 해야죠~
회사 여건상, Github에 연결할 수 없다면..
혹은 Mac에 다운 받아 놓고, 그 경로의 소스를 연결하고 싶다면
pod '라이브러리명', :path => '내폴더기준에서 라이브러리 최상위 폴더 위치'
예시로 하나의 진행을 해보면.. (RxSwift 라이브러리 하위 버전이 필요하다면)
pod 'RxSwift', :path => '../../cocoapods-library/RxSwift-4.3.0'
$ pod install
2017년 10월 18일 테스트 진행했던 과정을 정리한 것입니다.
참고한 유튜브 동영상 링크 : https://www.youtube.com/watch?v=gNMNeqXKnzw
코코아팟츠는 설치되어있을 거라는 가정하게 아래는 진행사항입니다.
# Go Go!
1. pod lib create 프로젝트명 : Demo Application이 생성된다.
- http://guides.cocoapods.org/making/using-pod-lib-create.html : 여기를 참고 하라고 알려줌
- 질문에 답은.. swfit, yes, none, no.. 통상 이리 하게 된다. 처음에 저도 같은 선택을 했음.
2. 그리고 github에 프로젝트를 생성한다.
3. 이후 터미널에서 생성한 레파지토리에 프로젝트를 추가한다.
…or create a new repository on the command line
echo "# 프로젝트명" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/ClintJang/프로젝트명.git
git push -u origin master
…or push an existing repository from the command line
git remote add origin https://github.com/ClintJang/프로젝트명.git
git push -u origin master
.. 실제
3.1. cd 프로젝트명의 폴더
3.2. git remote add origin https://github.com/ClintJang/프로젝트명.git
3.3. git add .
3.4. git commit -m "Create project via pod"
3.5. git push -u origin master
3.6. 잘 올라갔는 지 레파지 토리 확인
4. 다시 example의 xcode 실행파일로 돌아와서 Podspec Metadata폴더안의 프로젝트명.podspec를 수정한다.
5. pod lib lint 프로젝트명.podspec : 오류가 있는 지 검증한다.
5.1. pod lib lint --verbose : 과정을 보려면
5.2. pod lib lint --verbose --no-clean : 클린 빌드 하려면
5.3. pod lib lint --allow-warnings : 경고는 무시하려면
5.4. 프로젝트 passed validation : 이 메시지를 봐야된다.
5.4.1. 잘 되었는 지 확인은 다른 프로젝트에서 pod를 추가해 보면 된다.
5.4.2. podfile에 pod '프로젝트명', :path => '경로/경로/프로젝트명'
5.4.3. 해당 콘솔에서 pod install
6. git status : 반영할 것이 있는 지 확인한다.
6.1. git add . : 추가
6.2. git status : 녹색 확인
6.3. git commit -m "해당 수정내역"
6.4. git status : 이젠 없을 것임...
7. git tag 0.1.0 -a 버전 정보를 맞춘다.
7.1. 작성할 내용 추가하고 esc :x로 나온다.
7.1.1. 귀찮으면 git tag 0.1.0 : 까지 한다.
7.2. git status 로 상태를 확인한다. push 할 것이 있을 것이다...
7.3. 혹은 그냥 github site에서 release Tap을 찾아서 거기서 직접 작성해서 같은 버전을 추가한다.!!!
7.4. 잘 적용되면 git tag 로 확인
8. git push --tags
8.1. * [new tag] 0.1.0 -> 0.1.0 메시지를 확인해야된다.
9. pod trunk register 메일주소 '이름' --description='상세'
9.1. 반드시 메일에서 가서 웹 링크를 클릭해야됩니다!!!!!!! 그리고
10. pod trunk push
10.1. 경고가 많으시다면... pod trunk push --allow-warnings
아래의 메시지를 보시면 성공!!! (If you see the message below, you will succeed !!!)
🎉 Congrats
🚀 프로젝트명("Project Name") (0.1.0) successfully published
📅 October 18th, 15:34
🌎 https://cocoapods.org/pods/프로젝트명("Project Name")
👍 Tell your friends!
# end
- Fun day!