-
써드파티 라이브러리 만들기Library 2022. 2. 3. 09:56
안녕하세요. 그린입니다🟢
이번 포스팅에서는 코코아팟으로 써드파티 라이브러리를 만들어보는 학습을 해보겠습니다🙋🏻
라이브러리를 만든다고 생각하면 너무 거창하다고 생각했는데 막상 해보니 간단하더라구요ㅎㅎ
오늘 만들 라이브러리는 최근 소개드렸던 SwiftUI에서의 Stepper의 오류를 내지 않도록 커스텀하게 만든
커스텀 스텝퍼입니다!
(관련 소개했던 블로그 링크는 아래와 같습니다ㅎㅎ)
https://green1229.tistory.com/213
무튼 이걸 우선 초안이지만 라이브러리화 시켜보자구요!
라이브러리 만들기
1. 라이브러리 생성
라이브러리 프로젝트를 만들 디렉토리로 이동해 아래와 같이 터미널 명령어를 통해 라이브러리 생성!
pod lib create 라이브러리 이름
저 라이브러리 이름에 원하는 이름을 넣어주세요!
명령어를 입력하면 요렇게 질의응답을 할 수 있는것이 뜹니다!
하나씩 어떤건지 봐볼께요~
- What platform do you want to use??
> 어떤 플랫폼에서 사용할거냐! 저는 iOS니까 iOS!
- What language do you want to use??
> 어떤 프로그래밍 언어 사용할거냐! 저는 Swift!
- Would you like to include a demo application with your library?
> 라이브러리 테스트를 위한 데모 앱을 포함할거냐! 확인해봐야하지 저는 Yes!
- Which testing frameworks will you use?
> 테스팅 프레임워크를 이용할거냐! 저는 딱히 테스팅을 해보지 않을거기에 None!
- Would you like to do view based testing?
> 뷰 기반 테스팅을 할거냐! 저는 안할거니까 None!이렇게 질의를 다 마치고 엔터를 치면 라이브러리 프로젝트가 생성됩니다!
이제 찐으로 만들어보자구요ㅎㅎ
2. ReplaceMe 파일명 변경
우선 라이브러리를 만들 파일의 파일명을 변경해줘야합니다.
아래 경로로 들어가 파일명을 해당하는 라이브러리명으로 변경해줍시다!
Pods > Development Pods > 라이브러리명 폴더 > ReplaceMe.swift
제가 만들고 있는건 SuperStepper이니 위와 같이 변경해줬아요!
3. 라이브러리 코드 구현하기
이제 기초 세팅을 끝났습니다!
2번에서 변경한 swift 파일 내에 여러분들의 라이브러리화 시킬 코드를 넣고 만들어줍니다🙌
4. 라이브러리 직접 import하여 확인해보기
이제 만든 라이브러리를 직접 가져와서 잘 되는지 프로젝트에 심어보도록 하는 단계를 해보려해요!
이건 뭐 해도되고 안해도 자유지만 그래도 하는게 더 안전하겠죠?
아래 경로로 이동해줍니다.
라이브러리 프로젝트 > Example for 라이브러리명
여기서 기본적으로 VC하고 스토리보드가 생성되어 있을텐데 저는 SwiftUI를 이용할거라
기존 파일 제거하고 별도로 만들어주었습니다!
그리고 여기서 만든 라이브러리를 import 해볼께요.
자 이렇게 임포트가 아주~ 잘되죠!
우선 라이브러리를 만든건 성공인듯 합니다ㅎㅎ
5. 라이브러리 사용 테스트 해보기
이제 해당 예제 파일에 라이브러리를 가져왔으니 코드를 짜보고 테스트를 해봅시다.
아주아주 잘 작동합니다!
그럼 이제 다 끝났습니다ㅎㅎ
6. Podspec 파일 정보 추가 및 변경
이제 라이브러리를 팟으로 배포하기 위해 필요 정보를 추가하고 변경해주도록 하겠습니다.
우선 아래 경로로 이동해줍니다.
Pods > Development Pods > 라이브러리 네임 폴더 > Pod 폴더 > 라이브러리명.Podspec
저는 아래와 같이 변경해줬습니다.
Pod::Spec.new do |s| s.name = 'SuperStepper' s.version = '0.1.0' s.summary = 'A short description of SuperStepper.' s.description = <<-DESC TODO: Add long description of the pod here. DESC s.homepage = 'https://github.com/GREENOVER/SuperStepper' # s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2' s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { 'GREEN' => 'humains29@gmail.com' } s.source = { :git => 'https://github.com/GREENOVER/SuperStepper.git', :tag => s.version.to_s } # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>' s.ios.deployment_target = '14.0' s.source_files = 'SuperStepper/Classes/**/*' s.swift_versions = '5.0' # s.resource_bundles = { # 'SuperStepper' => ['SuperStepper/Assets/*.png'] # } # s.public_header_files = 'Pod/Classes/**/*.h' # s.frameworks = 'UIKit', 'MapKit' # s.dependency 'AFNetworking', '~> 2.3' end
복잡하지만 변경한 부분은 크게 없어요.
중요한 부분은 우선 name, version, summary 이건 기본으로 들어가 있습니다.
변경하고 싶으면 변경해도 되지만 딱히 변경할 일이 없어서 냅둡니다!
그리고 변경 및 추가해준 부분은 homepage는 깃헙 주소를 넣어줍니다.
author와 source를 자신의 것에 맞게 변경해줍니다.
저자와 해당 라이브러리 소스를 의미합니다.
그리고 최소 배포타겟을 14로 지정해주기 위해 ios.deployment_target도 변경해줍니다.
추가로 swift 버전도 변경해줬습니다.
7. 깃헙에 원격 저장소 생성
Xcode에서 깃헙 원격 저장소를 바로 만들어 볼께요!
뭐 당연히 깃헙에서 만들고 해도 되지만 이게 편하더라구요.
SourceControl Navigator > Repositories > Remotes를 우클릭하여 새 리모트를 생성합니다.
이렇게 설정하고 Create 해주면 아래와 같이 깃헙에 원격 저장소가 짜란하고 생깁니다.
간단하죠!??
8. 코코아팟으로 배포하기(1) - 라이브러리 커밋 및 태그 생성
이제 다 정말 끝났습니다! 배포해볼께요ㅎㅎ
해당 라이브러리 디렉토리에서 터미널을 열어 Podspec 파일에 이상이 없는지 린트로 체크부터 해줍시다!
pod spec lint
엥 뭐야!? 뭐 잘못됐나봐..
어떤 문제인지 보니 원격 브랜치에 0.1.0 태그가 없다고 하네요.
아마 podspec의 정보를 변경 및 생성하고 커밋을 안해줘서 그런거 같습니다.
우선 커밋을 해줄께요!
그 다음 태그를 만들고 저장소에 푸시해줍니다!
git tag 0.1.0 git push origin 0.1.0
여기서 0.1.0은 원하는 버전을 뜻합니다.
그러면 아래와 같이 잘 들어갑니다.
9. 코코아팟으로 배포하기(2) - 코코아팟 등록을 위한 이메일 인증 및 설정
아래 명령어를 입력해 pod 등록을 위한 인증 절차를 진향해줍니다.
pod trunk register 이메일 이름
그러면 요렇게 이메일에서 클릭하고 인증해라! 라고 나와요.
이메일로 가봅시다ㅎㅎ
친절도해라..
링크 클릭 ㄱㄱ!
코코아팟 사이트로 이동되는데 잘 설정되었고 터미널로 돌아가라고 안내해주네요ㅎㅎ
그리고 저 명령어를 넣으라하네요!
10. 코코아팟으로 배포하기(3) - 라이브러리 코코아팟에 푸쉬 및 출시
아래 명령어를 입력해줍니다.
pod trunk push 라이브러리명.podspec
만약 중간에 어떤 에러 메시지가 나오고 but you can use `--allow-warnings` to ignore it과 같은 메시지가 뜬다면
아래와 같이 옵션을 달아 진행해도됩니다.
아마 요약을 안써서 그런가 본데 상관없습니다!
pod trunk push 라이브러리명.podspec --allow-warnings
짠! 그러면 출시 잘 되었다고 축하한다고 알려주네요 ㅎㅎ
마무리
흐... 길고 길었는데 그렇게 어려운건 없었지만 재밌었던 라이브러리 만들기!
라이브러리를 하나 만들어보는 과정과 배포해보고 싶었던 욕망을 이제야 달성했네요..
당연히 아직 많이 부족한 라이브러리지만 배포를 먼저 해보고 싶어서 보완될 부분이 많은데 그냥 저질렀습니다ㅋㅋ
추가로 업데이트하는 방법에 대해서 또 다뤄볼께요🙌
아 SPM도 조만간..🥲
참고자료
https://fomaios.tistory.com/505
'Library' 카테고리의 다른 글
SPM 라이브러리 생성 및 배포 (2) 2022.02.09 CocoaPods 라이브러리 업데이트하기 (0) 2022.02.04 Macaw Vector Graphics Library (0) 2021.12.20 Code Scanner (0) 2021.12.07 Kin (0) 2021.12.04