如何建立一個屬於自己的 CocoaPods

References:

David Lin
David Lin
May 3, 2017 · 6 min read
  1. Creating Your First CocoaPod
  2. How to Create a CocoaPod in Swift

前言

之前在開發的時候,常常有很多常用的 Code,比如各種 extension,或者網路架構的東西,每次新開一個專案就又要複製貼上,或者從 github 上 clone 下來再搬過去,都很麻煩。於是我就想,可不可以用 pod install 就解決了呢?

順便推一下我的網路架構:https://github.com/yoxisem544/NetworkRequestKit

步驟

1. 建立一個新的 Pod

首先在你的 terminal 輸入(記得切換路徑)

$ pod lib create YourPodName

接著他就會問你:

What language do you want to use?? [ Swift / ObjC ]

Would you like to include a demo application with your library? [ Yes / No ]

Which testing frameworks will you use? [ Quick / None ]

Would you like to do view based testing? [ Yes / No ]

這邊隨意囉~自己設定啦,回答完後就建立完成了!

2. Pod 詳細資訊

  1. .podspec:定義這個 pod 的詳細資訊,包含 pod 名稱、版本、作者、詳細資訊等等,這都會關係到上架的資訊,不可以亂打。
  2. README:介紹這個 pod 的功能。

接著打開 Example 資料夾中的 YourPodName.xcworkspace,我們要修改一下這個 pod 的資訊。

先定一下名字、版本號、簡短資訊

Pod::Spec.new do |s|
s.name = 'YourPodNameThatDisplayedOnCocoaPods.org'
s.version = '1.0.0'
s.summary = 'short description.

description 則可以輸入更完整的資訊。

homepage, author, license 是自動生成的,他會預設幫你生成 github 的頁面,因為 cocoapods 相依於 github(當然也可以放在不同的地方,例如:BitBucket)。

ios.deployment_target = 9.0

以上如果有任何使用超過 ios 9 or 10 的 api,要記得定義一下這個參數。

s.source_files = 'YourPodName/Classes/'

注意路徑要設定好,預設路徑會在 /Classes 後面加上一些奇怪的路徑。

如果有使用其他的 dependencies 的話,記得也是要在這裡定義。譬如我在我的專案用了 SwiftyJSON, Alamofire, PromiseKit,就在後面定義且註明最小需要版本

s.dependency 'Alamofire', '~> 4.0.0'
s.dependency 'PromiseKit', '~> 4.0.0'
s.dependency 'SwiftyJSON', '~> 3.0.0'

3. 把 Code 丟進去

Image for post
Image for post

看到同樣專案的下方有個 Development Pods 資料夾,點開找到你專案名稱下面有個 Classes 資料夾(自己定路徑義的就不要管這個了),把你的 code 丟進去吧。

4. 開個 github repo

5. 加上版本號

首先先為自己的最後完成的 pod 加上 tag,並且 push 上 github。

$ git tag 1.0.0
$ git push origin 1.0.0

6. 驗證 Pod

$ pod spec lint YourPodName.podspec

如果你的 pod 會有一些 warning 並且你選擇忽略他,可以在後面加上

$ pod spec lint YourPodName.podspec --allow-warnings
Image for post
Image for post

7. 註冊 Cocoapods

需要驗證過 email 才可以在 cocoapods 上發佈你的 pod。

$ pod trunk register email@domain.com 'Your Name'

接著他就會叫你驗證 email。

Image for post
Image for post

8. 發佈到 Cocoapods

$ pod trunk push YourPodName.podspec

打完收工,接著你就可以在 Cocoapods 上找到你的 pod 囉。

Image for post
Image for post

Error look up

解決 pod spec lint 一直不抓取 github 新的 commit 問題:

因為 pod 會 cache 一些資料在 local,以致有時候 pod spec lint 時不會抓取最新 commit,可以使用 pod cache clean [POD_NAME] 來清理就會正常了

https://github.com/CocoaPods/CocoaPods/issues/393

https://guides.cocoapods.org/terminal/commands.html#pod_cache_clean

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch

Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore

Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store