English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

IOS CocoaPods 상세 설명 - 제작 편

다른 사람의 Pods 의존 라이브러리를 사용하는 것을 배웠다면, 자신의 의존 라이브러리를 생성하는 것에 대해 두드러지게 여겨질 것입니다. 오늘은 Pods 의존 라이브러리 생성 과정의 비밀을 밝혀보겠습니다. 전체 생성 과정은 WZMarqueeView라는 이름의 마루퀴 뷰 효과를 구현한 제가 만든 예제를 기준으로 합니다. 단계는 다음과 같습니다:

1. 자신의 github 저장소 생성하기

CocoaPods는 github에 힌트됩니다(공식 링크:https://github.com/CocoaPods)의 모든 Pods 의존 라이브러리는 github에 의존하고 있기 때문에, 첫 번째 단계는 자신의 github 저장소를 생성해야 합니다. 저장소 생성 인터페이스는 다음과 같습니다:


위 그림에 숫자가标注된 항목은 총6위의 설명은 다음과 같습니다:

1、Repository name

저장소 이름은 여기서 WZMarqueeView로 입력해야 합니다. 필수 입력입니다;

2、Description

저장소의 설명 정보는 선택 사항입니다;

3、저장소의 공개성

여기서는 공개(Public)만 선택할 수 있습니다. 이유는 Private는 돈이 들고, 또한 Private는 누군가가 볼 수 없기 때문입니다;

4、기본적인 README 파일 생성 여부

전체 저장소는 README 설명 문서가 필요합니다. 추천드립니다. 물론 번거롭지 않다면 나중에 수동으로 생성할 수도 있습니다;

5、.gitignore 파일 추가 여부

.gitignore 파일에는 여러 가지 파일 유형이 기록되어 있습니다. 이 파일에 포함된 파일 유형이면 git은 그 파일을 버전 관리에 포함하지 않습니다. 선택 여부는 개인의 필요에 따릅니다;

6、license 유형

규범적인 저장소는 license 파일이 있어야 합니다. Pods 의존 라이브러리는 이 파일에 대해 더 엄격하게 요구합니다. 따라서 반드시 필요합니다. 따라서 여기서 github가 생성해 주는 것이 좋습니다. 또는 나중에 생성할 수도 있습니다. 저는 사용하는 license 유형은 MIT입니다.

위의 모든 항목을 입력한 후 Create repository 버튼을 클릭하면 됩니다. 성공적으로 생성된 인터페이스는 다음과 같습니다:


이제 저장소 생성 과정이 끝났습니다.

2. 로컬에 저장소 clone하기
저장소에 내용을 제거하기 쉽게 하기 위해 먼저 저장소를 로컬에 clone해야 합니다. 여러 가지 방법이 있지만 명령줄을 추천합니다:

$ git clone https://github.com/wangzz/WZMarqueeView.git

작업이 완료되면 github에 해당하는 파일이 모두 로컬에 복사됩니다. 디렉토리 구조는 다음과 같습니다:

github에 있는 저장소의 .gitignore 파일은 .으로 시작하는 숨겨진 파일이기 때문에 여기서는 두 개만 볼 수 있습니다.
이후의 모든 파일 추가, 수정, 삭제는 이 디렉토리에서 이루어집니다。

세 번째 단계: 로컬 git 저장소에 Pods 의존성 라이브러리 생성에 필요한 파일 추가

주의: 다음 설명된 파일은 두 번째 단계에서 로컬 git 저장소에 클론한 루트 디렉토리 아래에 위치해야 합니다.
1뒤에 .podspec 파일
이 파일은 Pods 의존성 라이브러리의 설명 파일로, 각 Pods 의존성 라이브러리는 반드시 하나의 설명 파일을 가져야 합니다. 파일 이름은 생성하고자 하는 의존성 라이브러리 이름과 일치해야 하며, 제 WZMarqueeView 의존성 라이브러리와 관련된 파일 이름은 WZMarqueeView.podspec입니다.
1.1 podspec 파일 내용

WZMarqueeView.podspec의 저장 내용은 다음과 같습니다:

Pod::Spec.new do |s|
 s.name       = "WZMarqueeView"
 s.version     = "1.0.0"
 s.summary     = "A marquee view used on iOS."
 s.description   = <<-DESC
            It is a marquee view used on iOS, which implement by Objective-C.
            DESC
 s.homepage     = "https:"//github.com/wangzz/WZMarqueeView"
 # s.screenshots   = "www.example.com/screenshots_1", "www.example.com/screenshots_2"
 s.license     = 'MIT'
 s.author      = { "王中周" => "wzzvictory_tjsd@"163.com" }
 s.source      = { :git => "https:"//github.com/wangzz/WZMarqueeView.git", :tag => s.version.to_s }
 # s.social_media_url = 'https:'//twitter.com/NAME''
 s.platform   = :ios, ''4.3'
 # s.ios.deployment_target = ''5.0''
 # s.osx.deployment_target = ''10.7'
 s.requires_arc = true
 s.source_files = 'WZMarqueeView'/*'
 # s.resources = 'Assets'
 # s.ios.exclude_files = 'Classes'/osx'
 # s.osx.exclude_files = 'Classes'/ios'
 # s.public_header_files = 'Classes'/**/*.h'
 s.frameworks = 'Foundation', 'CoreGraphics', 'UIKit'
end

이 파일은 ruby 파일이며, 모든 항목의 의미는 쉽게 알 수 있습니다.
설명이 필요한 몇 가지 매개변수가 있습니다:
① s.license
Pods 의존 라이브러리가 사용하는 license 유형, 사용자들이 자신의 선택을 입력하면 됩니다.
② s.source_files
소스 파일의 경로를 나타냅니다. 주의할 점은 이 경로가 podspec 파일에 상대적입니다.
③ s.frameworks
사용할 framework, .frameworks 접미사를 추가하지 않아도 됩니다.

1.2 podspec 파일을 어떻게 생성할까요

사용자들이 자신의 podspec 파일을 생성할 수 있는 방법은 두 가지가 있습니다:
① 제 podspec 파일을 복사한 후 필요한 매개변수를 수정하는 방법을 추천합니다.
② 다음과 같은 명령어를 실행하세요:

$ pod spec create WZMarqueeView

WZMarqueeView.podspec라는 파일도 생성됩니다. 하지만 파일을 열어보면 많은 내용이 있고, 우리가 필요하지 않은 많은 내용이 있습니다.

2LICENSE 파일
CocoaPods는 모든 Pods 의존 라이브러리가 license 파일을 가져야 하며 그렇지 않으면 검증이 통과하지 않습니다. license의 유형은 많으며, 자세한 내용은 tl;dr Legal 웹사이트를 참조하세요. github 저장소를 생성할 때, 저는 MIT 유형의 license를 선택했습니다.

3주 클래스 파일
Pods 의존 라이브러리를 생성하는 이유는 다른 사람들이 우리의 성과를 쉽게 사용할 수 있게 하기 위해서입니다. 예를 들어, 저는 공유하고 싶은 WZMarqueeView 클래스는 많은 사용자에게 제공하고자 하는 것이며, 이 클래스는 필수적입니다. 이 클래스를 포함한 두 개의 파일을 WZMarqueeView라는 이름의 폴더에 넣었습니다. 해당 디렉토리 구조는 다음과 같습니다:

두 개의 파일이 포함되어 있습니다: WZMarqueeView.h와 WZMarqueeView.m

4demo 프로젝트
사람들에게 우리의 Pods 의존 라이브러리를 빠르게 가르쳐주기 위해 일반적으로 demo 프로젝트를 제공해야 합니다. 저는 WZMarqueeViewDemo라는 폴더에 demo 프로젝트를 만들었습니다. 이 폴더에 포함된 파일은 다음과 같습니다:

52. README.md
github을 사용하는 사람들은 이 파일을 잘 알고 있으며, 이는 성공적인 github 저장소의 필수적인 부분입니다. 이 파일은 markdown 표기 언어를 사용하여 저장소의 자세한 설명을 위해 사용됩니다.

위에서 설명한5개는 Pods 의존 라이브러리를 생성하기 위해 필요한 가장 기본적인 파일로, 중에서1、2、3필수 사항입니다.4、5선택 사항이지만, 강력히 추천합니다.
이 파일들을 추가한 후, 제 github 로컬 저장소 디렉토리는 다음과 같이 변했습니다:

4. 변경된 파일을 github에 제출
셋째 단계에서 로컬 git 저장소에 많은 파일이 추가되었습니다. 이제 이 파일들을 github 저장소에 제출해야 합니다. 제출 과정은 다음과 같은 단계로 이루어집니다:
13. pod 검증
다음 명령어를 실행하세요:

$ 새로운 버전을 설정합니다 1.0.0
$ 새로운 tag을 설정합니다 1.0.0

이 두 명령어는 Pods에 버전 번호를 추가하고 tag을 지정합니다. 그리고 pod 검증 명령어를 실행합니다:

$ pod lib lint

모든 것이 정상적으로 진행되면, 이 명령어를 실행한 후 다음과 같은 출력이 나타날 것입니다:

 -> WZMarqueeView (1.0.0)
WZMarqueeView 검증 통과.

이제 pod 검증이 끝났습니다.
주의해야 할 것은, pod 검증 명령어를 실행할 때 어떤 warning이나 error 정보가 출력되면 검증이 실패합니다! 검증이 이상적으로 진행되지 않으면, 출력되는 정보는 매우 자세합니다. 따라서, 해당 제안에 따라 수정을 진행하십시오.

21. 로컬 git 저장소의 변경 내용을 github 저장소에 업로드
다음 명령어들을 차례로 실행하세요:

$ git add -A && git commit -m "Release 1.0.0."
$ git tag '1.0.0'
$ git push --tags
$ git push origin master

위 명령어들은 모두 git의 범위에 속하며, 여기서는 설명하지 않겠습니다. 모든 것이 정상적으로 진행되면, github에서 최근 추가한 내용을 볼 수 있습니다. 다음 그림을 참고하세요:

5. podspec 파일을 CocoaPods 공식 저장소에 업로드하기
앞서 설명한 네 단계를 통해 완료할 것으로 생각했을지 모르지만, 아직 멀었습니다.

Pods 의존 라이브러리가 정말 사용 가능하려면 마지막 단계를 완료해야 합니다. 우리가 얼마 전에 생성한 podspec 파일을 CocoaPods 공식의 Specs 저장소에 업로드합니다. 링크는 다음과 같습니다: https://github.com/CocoaPods/Specs

이 링크를 열면 알 수 있듯이, 우리가 사용할 수 있는 것과 pod search 명령어로 검색할 수 있는 모든 Pods 의존 라이브러리들은 그들의 podspec 파일을 이 저장소에 업로드합니다. 따라서, 우리의 podspec 파일을 이 저장소에 업로드하지 않으면 진정한 Pods 의존 라이브러리가 될 수 없으며, 다른 사람들이 정상적으로 사용할 수 없습니다!

git의 규칙에 따르면, 다른 사람의 저장소에 파일을 추가하려면 먼저 다른 사람의 저장소를 fork하고, 필요한 수정을 끝내고 원본 저장소의原作者에게 push해야 합니다. 그런 다음,原作者가 검토를 통과하면 원본 저장소에 병합됩니다.

이 과정을 이해하면 자연스럽게 어떻게 해야 할지 알게 됩니다:
1CocoaPods 공식 Specs 저장소를 fork합니다
지금까지의 공식 저장소 링크에 들어가서, 화면 오른쪽 상단의 fork 버튼을 클릭합니다. 아래와 같이 보입니다:



그런 다음, 자신의 명하에 저장소의 새로운 브랜치가 생깁니다. 예를 들어, 저의 브랜치는 다음과 같습니다:

2fork한 저장소를 로컬로 clone 합니다
다음 명령어를 실행하세요:

$ git clone https://github.com/wangzz/Specs.git

주의할 점은, 모두가 해당 저장소 주소를 자신의 주소로 변경해야 합니다.
이 저장소는 크기가 크기 때문에 성장성이 필요합니다.

3자신의 podspec 파일을 로컬 Specs 저장소에 추가합니다
Specs 저장소를 로컬로 clone 한 후는 Specs라는 폴더에 저장됩니다. podspec 파일의 저장 원칙은 다음과 같습니다:
Pods 의 의존성 라이브러리와同名 폴더---> 버전 번호와同名 폴더---> podspec 파일
이 원칙에 따라, 자신이 Specs 폴더 아래에 WZMarqueeView라는 이름의 폴더를 만들어야 하며, 그 폴더 아래에 이름이 같은 폴더를 만들어야 합니다.1의 폴더로 들어갑니다.1이 폴더 아래에, 이전에 만든 WZMarqueeView.podspec 파일을 복사합니다.
이해하기 쉽습니다. WZMarqueeView 클래스에 대한 업그레이드가 있을 때는 WZMarqueeView 폴더 아래에 해당 버전 이름의 폴더를 만들어 해당 버전의 podspec 파일을 저장하면 됩니다.
이 작업이 완료되면, 다음과 같은 디렉토리 계층 구조가 보입니다:

4로컬 Specs 저장소에 있는 수정을 github 저장소에 업로드합니다
다음 명령어를 실행하세요:

$ git add -A && git commit -m "WZMarqueeView podspec 파일 추가"
$ git push origin master

성공하면 github에 자신이 fork한 Specs 저장소에서 새로 올린 파일을 볼 수 있습니다。

5자신이 fork한 Specs에 대해 한 수정을 CocoaPods 공식 Specs 저장소에 pull합니다
자신이 fork한 Specs 저장소에 들어가면, 화면 왼쪽 상단에 녹색 버튼이 있습니다:


이 버튼을 클릭하면 아래와 같은 인터페이스가 나타납니다:

그림에 나오는緑색 Create Pull Request 버튼을 클릭하면 우리가 fork 한 Specs에 대한 수정을 CocoaPods 공식의 Specs 저장소에 pull할 수 있습니다.

이 단계에 도달하면, 남은 작업은 대기뿐입니다. CocoaPods 유지보수 팀이 검토하고 우리가 pull 한 수정을 공식 Specs 저장소에 병합하는 것을 기다립니다. 이 과정은 일반적으로 하루 정도의 기다림 시간이 필요합니다. 어떤 메시지가 있든, 검토가 거부되었는지, 또는 검토가通过的지, CocoaPods 공식은 이메일을 통해 알림을 보냅니다.
검토가通过的 경우, 공식 Specs 저장소에서 올린 폴더를 볼 수 있습니다.

6、검토 진도 확인
물론 검토 진도를 확인할 수도 있습니다. 다음 링크를 열어주세요:https://github.com/CocoaPods/Specs/pulls위 그림과 같이 모든 Specs 저장소 pull 요청을 볼 수 있습니다.

홍색 원으로 표시된 것이 제가 pull 한 요청입니다. 클릭하면 해당 검토 진도를 볼 수 있습니다.

6. 우리가 생성한 Pods 의존 라이브러리 확인
CocoaPods 공식이 보낸 검토가通过的 이메일을 받으면, 자신의 컴퓨터에서 pod search 명령어를 실행하여 자신이 생성한 Pods 의존 라이브러리를 검색할 수 있기를 기대할 수 있습니다. 하지만 당신은 실망할 것입니다. 왜냐하면 search 명령어를 사용하여 로컬 컴퓨터에서 의존 라이브러리를 검색할 수 있도록 추가 명령어를 실행해야 하기 때문입니다:

$ pod setup

저의 CocoaPods 시리즈 가이드의 첫 번째 편에서: CocoaPods 설명에서----고급편의 마지막 부분에서 이 명령어가 소개되었습니다. 이 명령어는 모든 Pods 의존 라이브러리 트리를 로컬에 업데이트합니다. 이 명령어를 실행한 후 다음 명령어를 실행합니다:

$ pod search WZMarqueeView

그럼 해당 소개 정보가 표시됩니다!

그렇게 많이 말했지만, 여기에 도달하면 Pods 의존 라이브러리 생성 과정이 정말 끝났습니다! 친구들아, 성공하셨나요??? 문제가 있으면 댓글을 남겨주세요.

7. 참조 문서

1、http://guides.cocoapods.org

좋아하는 것