TIL
코코아팟 라이브러리 만들고 배포하는 방법 (feat. SwiftUI)
내일은개발천재🎵
2023. 3. 19. 15:49
Record 작업하면서 Carousel을 만들었는데, 많은 부분에서 쓰일 수 있을 것 같아서 커스텀 가능한 형태로 라이브러리를 만들게 됐다!
코코아팟 배포하는 방법
Pod Libary를 생성하기
- 터미널에서 작업할 디렉토리로 이동한다.
pod lib create JWCarousel
을 입력한다.- 라이브러리 정보를 입력한다.
- 해당 정보를 입력하면, Xcode 프로젝트가 열린다. (안 열린다면 해당 디렉토리 이동해서 직접 열자)
코드 작성하기
- 아까 만든 Pod 프로젝트에서 코드를 작성한다.
- Pod/DevelopmentPods/JWCarousel/ReplaceMe.swift 파일을 수정해주면 된다. (접근제어 주의!)
- 나는 SwiftUI 프로젝트이기 때문에 UIKit으로 되어있는 데모를 수정해줘야했다.
- App Delegatedml
UIHostingController
을 이용해서 rootView 수정하기 - plist에서 Main Storyboard 정보 삭제하기
- Main Storyboard 삭제하기
- target iOS 버전 수정하기. (SwiftUI는 iOS 13부터 사용가능하다)
- Demo와 Pod target에 모두 적용해주자.
- App Delegatedml
Pod Spec 수정하기
- 데모 프로젝트 최상단 혹은 Pods/Pod에 JSCarousle.podspec이라는 파일에 들어간다.
- 이미 엄청난 주석과 함께 적혀져 있겠지만, 문서를 보고 다시 작성하는게 마음 편할 것이다^^;;
pod spec create [NAME|https://github.com/USER/REPO]
- 그냥 코드 지워줘도 되고, 터미널에서 새로 만들어도 된다. (나는 그냥 코드 지우고 다시 썼다)
- 내 pod spec이다.여기서 중요한 부분은 소스파일 위치! (기존 정보는 JWCarousel/이렇게 써져있지 않을거다! 여기 꼭 수정해주자)
- 공식 문서를 참고하여 작성하자
Pod::Spec.new do |spec|
spec.name = 'JWCarousel' # 프로젝트 이름
spec.version = '0.1.0' # 버전
spec.license = { :type => 'MIT', :file => 'LICENSE' } # 라이센스
spec.homepage = 'https://github.com/JIWON1923/JWCarousel' # 깃허브 링크
spec.authors = { 'Jiwon Lee' => 'zest1923@gmail.com' } # 작성자
spec.summary = 'The JWCarousel library for SwiftUI provides a highly customizable carousel view for iOS apps.' # 라이브러리 소개
spec.source = { :git => 'https://github.com/JIWON1923/JWCarousel.git', :tag => spec.version } # 소스코드 위치
spec.swift_version = '5.0'
spec.ios.deployment_target = '15.0'
spec.source_files = 'JWCarousel/Classes/**/*' # 코드 파일 위치
end
Pod 검증하기
- 터미널에서
pod lib lint
를 입력한다. - 나는 오류가 발생했다.
- 오류 내용을 확인하고 하나씩 해결해주면 된다.error: extra trailing closure passed in call
- 나는 이런 오류가 발생했다. 당황하지 말고 Pod 프로젝트에 들어간다. (코드는 문제가 전혀 없었다)
xcodebuild: Returned an unsuccessful exit code. You can use--verbose
for more information. - Pod이 저장된 프로젝트에 들어가보자.
나는 View+JWCarousel.swift, FramePreferenceKey+JWCarousel.swift를 팟이 인식하지 못해 생긴 문제였다.
spec에 명시한 위치로 코드를 옮겨줘야한다. (Xcode에서 파일을 인식할 수 있도록 경로를 재설정해주자)
- 다시
pod lib lint
수행한다.
깃에 프로젝트 등록하기
- 프로젝트를 Push 해준다
git add .
git commit -m "커밋메시지"
git branch -M main
git remote add origin 주소.git
git push -u origin main
- tag를 push 해준다. (spec에 적은 version과 동일하게 적어준다)
git tag 0.1.0
git push origin 0.1.0
pod에 등록하기
- 명령어 입력
pod trunk register 이메일
- 이메일에서 확인하기
- 마지막! spec 푸시하기
pod trunk push JWCarousel.podspec
완성
![](../.gitbook/assets/image (2).png)
![](../.gitbook/assets/스크린샷 2023-03-19 오전 8.52.25.png)
근데 아직 코코아팟에 검색해도 나오지는 않는다!! 그래도 넘나 뿌___듯