闡述
隨著iOS的不斷發展,越來越多的開發者開始使用CocoaPods來管理他們的第三方。使用Pods時,我在考慮Pods能不能給自己更大的幫助,改變現在的開發風格。
制作
下方將介紹Pods制作步驟(文中多處操作使用Git命令,用戶可使用SourceTree來操作)
一、在Github中創建一個倉庫(Repository)
相信大家都有Github賬號,此處忽略關於Github賬號申請細節。

上方各部分含義:
1、Repository name
代碼倉庫名稱,也可以說是Pod的名字
2、Description
代碼倉庫的描述信息
3、倉庫的公開性
隨個人能力選擇,Public免費,Private收費
4、是否創建一個默認的README文件
完整的代碼倉庫,都需要README
5、是否添加.gitignore文件
.gitignore文件裡面記錄了若干文件類型,凡是該文件包含的文件類型,git都不會將其納入到版本管理中,是否選擇看個人需要。
6、license類型
正規的倉庫都應該有一個license文件,Pods依賴庫對這個文件的要求更嚴,是必須要有的。因此最好在這裡讓github創建一個,也可以自己後續再創建。我使用的license類型是MIT
二、Clone 這個倉庫到本地目錄(可使用SourceTree等其它svn工具)
Terminal 命令
$ git clone 倉庫地址

三、本地創建 .podspec 文件 (spec 規范)
1、簡述 .podspec 文件
該文件為Pods依賴庫的描述文件,每個Pods依賴庫必須有且僅有一個描述文件,名稱需與創建的依賴庫名稱保持一致。
2、.podspec 文件相關
a 示例內容
Pod::Spec.new do |s|
s.name = "MethodFactory"
s.version = "0.0.1"
s.summary = "MethodFactory is a Good Factory of Method."
s.description = <<-DESC
MethodFactory is a Good Factory of Method ,it has too much nice method.
DESC
s.homepage = "https://github.com/yanglei3kyou/MethodFactory"
# s.screenshots = "www.example.com/screenshots_1.gif", "www.example.com/screenshots_2.gif"
s.license = "MIT"
# s.license = { :type => "MIT", :file => "FILE_LICENSE" }
s.author = { "yanglei3kyou" => "[email protected]" }
# Or just: s.author = "yanglei3kyou"
# s.authors = { "yanglei3kyou" => "[email protected]" }
# s.social_media_url = "http://twitter.com/yanglei3kyou"
s.platform = :ios
s.source = { :git => "https://github.com/yanglei3kyou/MethodFactory.git", :tag => "0.0.1" }
s.source_files = “MethodFactory/**/*.{h,m}"
# s.public_header_files = "Classes/**/*.h"
s.resources = "MethodFactory/*.png"
# s.preserve_paths = "FilesToSave", "MoreFilesToSave"
s.frameworks = "Foundation", "UIKit"
s.requires_arc = true
end
b 參數解釋
s.license
Pods依賴庫使用的license類型
s.source_files
表示源文件的路徑,注意這個路徑是相對podspec文件而言的。
s.frameworks
需要用到的frameworks,不需要加.frameworks後綴。
3、創建.podspec文件 (在 Git倉庫根目錄)
a 創建文件,填寫內容(上方示例內容),根據內容進行修改
b Terminal命令$ pod spec create Method
四、關於LICENSE文件
CocoaPods 要求所有的Pods依賴庫都必須包含license文件,否則在發布CocoaPods官方時不予通過驗證。
license的類型有很多種,在創建github倉庫的時候,已經選擇了MIT類型的license。
五、關於主類文件
創建Pods依賴庫就是為了方便別人使用我們的成果,比如我想共享給大家的MethodFactory類,提供給廣大用戶使用,這個類自然是必不可少的。我把這個類包含的兩個文件放到一個名稱為MethodFactory的文件夾中,對應的目錄結構如圖:

六、關於Demo工程
為了快速地教會別人使用我們的Pods依賴庫,通常需要提供一個Demo工程。我創建的Demo工程放到了一個名為MethodFactoryDemo的文件夾中,該目錄包含的文件如下圖所示:

七、關於README.md
使用github的人應該都熟悉這個文件,它是一個成功github倉庫必不可少的一部分,使用的是markdown標記語言,用於對倉庫的詳細說明。
添加完上方文件後,Github本地倉庫目錄就如下圖所示

八、將本地倉庫提交到 Github 中
1、pod 驗證
$ set the new version to 1.0.0
$ set the new tag to 1.0.0
$ pod lib lint

注意: pod 驗證過程中,出現任何warning 或者 error信息,驗證都會失敗,請按照提示信息,進行修改
2、上傳到 Github 中
$ git add -A && git commit -m “Release 1.0.0."
$ git tag ‘1.0.0'
$ git push --tags
$ git push origin master

九、不發布此Pods,直接使用Pods
如果沒有計劃在CocoaPods中發布此Pods,可直接在項目的Podfile文件中添加該 Pods並使用。
pod ‘MethodFactory’,:git => 'https://github.com/yanglei3kyou/MethodFactory.git'
十、上傳pod spec文件到 CocoaPods官方倉庫中
如果計劃Pods依賴庫在CocoaPods使用,需要將 podspec文件上傳到CocoaPods官方的specs倉庫中,鏈接為https://github.com/CocoaPods/Specs。
根據git的規則,要想向別人的倉庫中添加文件,必須先fork一份別人的倉庫,做完相應地修改後,在push給倉庫的原作者,等到作者審核通過,然後合並到原來的倉庫中。
1、fork一份CocoaPods官方的Specs倉庫
進入到剛才的官方倉庫鏈接中,點擊屏幕右上角的fork按鈕,如下圖:

然後大家會發現自己名下會多一份倉庫的分支。比如我的分支為:

2、將fork的倉庫clone到本地
$ git clonehttps://github.com/yanglei3kyou/Specs.git
重要的事情說三遍: 將對應倉庫地址換成自己的,將對應倉庫地址換成自己的,將對應倉庫地址換成自己的
3、將自己的podspec文件添加到本地Specs倉庫中
Specs倉庫clone到本地後,會放到一個名為Specs的文件夾中。podspec文件在Specs倉庫中的保存原則是:
Pods依賴庫同名文件夾 —> 版本號同名文件夾 —> podspec文件
照此原則,需要在Specs文件夾下建立一個名為MethodFactory的文件夾,然後進入到MethodFactory文件夾下,建立一個名稱為1.0.0的文件夾,最後進入到1.0.0這個文件夾下,並且將之前創建好的MethodFactory.podspec文件拷貝進來。
不難理解,如果以後有對MethodFactory類的升級,就在MethodFactory文件夾下建立對應版本名稱的文件夾,用於保存對應版本的podspec文件即可。
4、上傳本地Specs倉庫中的修改到github倉庫
$ git add -A && git commit -m “Add MethodFactory pod spec file"
$ git push origin master
執行以上命令,成功後就能在github上自己fork的Specs倉庫中看到剛上傳的文件。
5、將在自己fork的Specs上做的修改pull給CocoaPods官方的Specs倉庫
進入到自己fork的Specs倉庫中,會看到屏幕左上角有一個綠色按鈕:New pull request。點擊後會進入另外一個頁面,點擊綠色Create Pull Request按鈕,即可將我們fork的Specs上做的修改pull給CocoaPods官方的Specs倉庫。
到這一步後,剩下的工作就只有等了,等待CocoaPods的維護人員審核並將我們pull上去的修改合並到官方的Specs倉庫中,這個過程通常會有一天左右的等待時間。如果有任何消息,比如審核不通過,或者審核通過了,CocoaPods官方都會發郵件通知的。到審核通過的時候,我們就能在官方的Specs倉庫中看到自己上傳的文件夾。
6、查看審核進度
審核進度鏈接:https://github.com/CocoaPods/Specs/pulls,這裡能看到所有的Specs倉庫pull請求
十一、查看我們自己創建的Pods依賴庫
先使用 $ Pod setup 更新本地Pods依賴庫Tree。然後在使用 $ pod search MethodFactory 命令搜索。