CocoaPods 라이브러리를 만들고 구현하는 방법(feat. SwiftUI)


설명: JWCarousel 라이브러리 구축

CocoaPods 배포 방법

포드 라이브러리 생성

  1. 터미널에서 작업하려는 디렉터리로 변경합니다.

  2. pod lib create JWCarousel입력

  3. 도서관 정보를 입력합니다.

    정보를 입력하면 Xcode 프로젝트가 열립니다.
    (열리지 않으면 해당 디렉터리로 이동하여 직접 엽니다.
    )

코드 작성

  1. 앞서 생성한 포드 프로젝트에 코드를 작성합니다.

    Pod/DevelopmentPods/JWCarousel/ReplaceMe.swift 파일을 편집하기만 하면 됩니다.
    (주의 액세스 제어!
    )

  2. 저는 SwiftUI 프로젝트이기 때문에 데모를 UIKit으로 변경해야 했습니다.

    1. 앱 델리게이트 ml UIHostingController다음을 사용하여 rootView 변경

    2. plist에서 메인 스토리보드 정보 삭제

    3. 메인 스토리보드 삭제

    4. 대상 iOS 버전을 변경합니다.
      (SwiftUI는 iOS 13부터 사용 가능)

      데모 및 팟(Pod) 대상 모두에 적용하십시오.

포드 사양 편집

  1. 데모 프로젝트 상단 또는 Pods/Pod에 JSCarousle.podspec이라는 파일을 입력합니다.

  2. 이미 많은 댓글로 작성되어 있을 수 있지만 문서를 보고 다시 작성하면 좋을 것 같습니다^^;;

    코드를 삭제하거나 터미널에서 새 코드를 생성할 수 있습니다.
    (그냥 코드를 삭제하고 다시 작성했습니다)

    pod spec create (NAME|https://github.com/USER/REPO)
  3. 여기 내 포드 사양입니다.

    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' => '[email protected]' }
      # 라이브러리 요약 설명
      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 }
      # Swift 버전 (이거 안 바꾸면 경고 나온다)
      spec.swift_version = '5.0'
      # 최소 버전
      spec.ios.deployment_target="15.0"
      # 소스 파일 위치
      spec.source_files="JWCarousel/Classes/**/*"
    end
    

    여기서 중요한 부분은 소스 파일 위치입니다!
    (기존 정보는 JWCarousel/그렇게 쓰지 않습니다!
    이곳에 꼭 수정해주세요.)

    공식 문서참고로 써보자

포드 검증

  1. 최종 장치에서 pod lib lint입력
  2. 실수가 있어요
<figure><img src="../.gitbook/assets/image (4).png" alt=""><figcaption></figcaption></figure>
  1. 오류를 확인하고 하나씩 수정하십시오.

    xcodebuild: 실패한 종료 코드가 반환되었습니다.
    당신이 사용할 수있는 --verbose 자세한 내용은

    오류: 호출에서 추가 후행 클로저를 전달했습니다.

    이 오류가 발생했습니다.
    당황하지 말고 포드 프로젝트에 들어가세요. (코드는 전혀 문제가 없었습니다)

  2. 포드가 저장되어 있는 프로젝트로 이동합니다.

<figure><img src="../.gitbook/assets/image (5).png" alt=""><figcaption></figcaption></figure>

나는 `View+JWcarousel.swift`, `FramePreferenceKey+JWCarousel`이 Class 폴더 내부에 없어서 발생한 문제였다.
(코드의 위치를 몰랐던 것임!
) <figure><img src="../.gitbook/assets/image (6).png" alt=""><figcaption></figcaption></figure> 인식 못했던 코드를 여기로 옮겨주고, Xcode에 들어가서 파일 위치를 재설정해준다.
  1. 다시 한번 pod lib lint 수행하다
<figure><img src="../.gitbook/assets/image (3).png" alt=""><figcaption></figcaption></figure>

Git에 프로젝트 등록

  1. 프로젝트를 진행하다
git add .
git commit -m "커밋메시지"
git branch -M main
git remote add origin 주소.git
git push -u origin main
  1. 라벨 누르기 (사양서에 기재된 버전과 동일하게 작성)
git tag 0.1.0
git push origin 0.1.0

포드에 등록

  1. 명령 입력
pod trunk register 이메일
  1. 체크인 이메일

    링크를 클릭하세요!

  2. 마지막!
    프레스 사양

pod trunk push JWCarousel.podspec

완벽한

그런데 CocoaPods 검색해도 안나오네요!
!
아직도 너무 자랑스러워___