티스토리 뷰

반응형

CocoaPod 에 Library 등록 방법 - Local Create

오픈 라이브러리를 iOS 에서 사용하게되면 보편적으로 Pod 을 활용하여 해당 프로젝트에 다운받게 됩니다. 다른 개발자들이 올린 오픈소스를 사용하면서 Pod 에 저만의 Code 을 등록하고 싶은 마음이 있었고 이런 저런 방법을 구글링하면서 연구하다가 github에 있는 소스코드를 Pod에 업로드에 성공하였습니다. 제가 업로드에 성공한 github에 있는 소스코드를 Pod에 업로드 방법을 소개하겠습니다.

( 본 글은Mac Os 기준으로 작성되었습니다.)


CocoaPod Library 만들기

가장 먼저 Pod에 올릴 파일을 만들겠습니다.

너무 복잡하게 생각할 필요 없습니다.

  1. 터미널에서 CocoaPod Project을 만들 곳으로 이동합니다.

  2. [pod lib create] 명령어를 실행합니다.

    pod lib create [Project Name]

    예시

    pod lib create TestPodProject


  3. pod lib create 명령어로 실행 하면 다음과 같은 문구가 나옵니다. 간단한 답변은 자신이 원하는 상황에 맞게 입력합니다.

    What platform do you want to use?? [ iOS / macOS ]
    > iOS
    What language do you want to use?? [ Swift / ObjC ]
    > Swift
    Would you like to include a demo application with your library? [ Yes / No ]
    > Yes
    Which testing frameworks will you use? [ Quick / None ]
    > None
    Would you like to do view based testing? [ Yes / No ]
    > No

    위의 질문에 대한 답변을 하게되면 자동으로 Project가 생성되며 Xcode 가 실행됩니다.

    [포드 생성 완료된 화면]


    [Xcode 호출 된 화면]



  4. 자신이 만들 라이브러리를 등록 준비합니다. (저장 장소 확인)

    cd /Users/mac/Documents/iOS/PodProject_KCS/TestPodProject/TestPodProject/Classes

    'pod lib create TestPodProject' 명령어 적은 로컬에 가면 프로젝트가 생성되었습니다. 그 프로젝트의 Classes 디렉토리에 자신이 만들 라이브러리를 생성하면됩니다.


  5. xcode > pods > Development Pods > Project Name 에 파일 생성합니다.

    Test Class 을 생성할 것입니다. Pods 에 파일을 생성하는데 Swift.file 이 아닌 Cocoa Touch Class 을 생성합니다.

    [pods 파일 넣을 위치 화면]


    [pods CocoaTouch 파일 넣는 화면]


    [파일명 입력화면]


    [파일 저장위치 설정화면]



  1. Library로 사용할 기능 구현합니다.

    테스트용으로 Log 을 표시하는 함수를 갖은 클래스를 생성합니다. 여기서 ClassFuctionpublic 으로 작성해야 합니다.

    import UIKit

    public class TestPodClass: NSObject {
       public func TestLog(msg: String){
           print("Test Pod Class Message : \(msg)")
       }
    }

6번까지해서 로컬 Pod Library를 간단히 작성하였습니다. 5번에서 언급한 주소에서 라이브러리 소스를 구성하는 규칙만 지키시면 라이브러리 만드는 것에 있어서는 어려움이 없을 것으로 예상됩니다.

Testing Frameworks에서 Pods Library 확인하기

Pod lib create 로 생성할 때에 Testing frameworks 을 사용하겠다고 설정하였다면 지금 만든 Pods Library 가 정상 동작하는지 확인할 수 있습니다. 우선 Testing frameworks 로 이동합니다.

Testing Frameworks 의 ViewController 위치 이동



Test Code 작성

Test Pods 에서 작성한 로그 찍는 함수를 호출할 것입니다.

import TestPodProject

생성한 Pods Name 을 import 후 작성했던 TestLog() 메소드를 호출합니다. 만약 TestLog() 메소드 아닌 다른 것을 작성하였다면 그 메소드를 호출합니다.

import UIKit
import TestPodProject

class ViewController: UIViewController {

   override func viewDidLoad() {
       super.viewDidLoad()
       // Do any additional setup after loading the view, typically from a nib.
       let test = TestPodClass()
       test.TestLog(msg: "Hellow World")
   }

   override func didReceiveMemoryWarning() {
       super.didReceiveMemoryWarning()
       // Dispose of any resources that can be recreated.
   }
}

빌드 진행을 하게되면 로그에 Heloow World 가 찍히는 것을 확인이 된다면 정상적으로 Pods 가 생성 되었음을 확인 할 수 있습니다.

[결과화면]



생성한 Pods 가 Import 안되는 경우 해결 방법

  1. xcode > product > Build 로 Project Build 합니다.

  2. Pods 에서 생성한 파일의 Target membership이 Pods library에 포함 되어 있는지 확인 합니다.

[Target membership]



TestProject 을 생성하여 Locol CocoaPods 사용하기

다른 앱에서 Locol Pods 을 호출하는 방법을 나누겠습니다.


첫 번째, 새로운 프로젝트를 생성 후 Other-Empty 파일 생성합니다.

우선 호출할 앱을 New Project 로 만듭니다. 그 다음 새로 만들어진 프로젝트에 Other - Empty 파일을 생성합니다.



두번째, Podfile 을 생성합니다.

파일 이름은 Podfile 을 생성합니다. 그후 Podfile 내용 안에 다음과 같이 구성합니다.

use_frameworks!

target '[호출 할 프로젝트명]' do
pod "호출 대상 Locol Pods 이름", :path => '[Locol Pod 위치]'
end

예를 들어 SampleTestLocalPods 프로젝트에서 TestPodProject 을 호출 시 다음과 같이 표현할 수 있습니다.

use_frameworks!

target 'SampleTestLocalPods' do
pod "TestPodProject", :path => '/Users/Documents/iOS/PodProject_KCS/TestPodProject'
end


세번째, Podfile을 설치합니다.

Terminal에서 호출 할 프로젝트로 이동합니다. 이전 단계에서 호출할 프로젝트에 podfile 을 생성하였기에 pod 를 intall하는 명령만 내립니다.

pod install



네번째, Locol CocoaPods 에 설정한 Class 을 호출하여 정상적으로 호출 되는지 확인합니다.

import UIKit
import TestPodProject

class ViewController: UIViewController {

   override func viewDidLoad() {
       super.viewDidLoad()
       // Do any additional setup after loading the view, typically from a nib.
       let test = TestPodClass()
       test.TestLog(msg: "Hello World")
   }

   override func didReceiveMemoryWarning() {
       super.didReceiveMemoryWarning()
       // Dispose of any resources that can be recreated.
   }
}


정리

간단한 방법으로 Locol Pods을 생성하고 호출하는 방법에 대해서 공유하였습니다. Locol Pods 에서 더 나아가 github에 등록하여 Pods Turnk 에 넣는 방법도 있습니다. 다양한 방법으로 자신만의 라이브러리를 만들어 더 좋은 프로그램을 만드는데 도움이 되었으면 좋겠습니다.

반응형
댓글