制作公有的 pod:
前期準(zhǔn)備
首先要安裝 CocoaPods
如果已安裝 CocoaPods 并且 Xocde 版本是8或者更高版本,升級(jí) CocoaPods。
創(chuàng)建本地的項(xiàng)目,將要開源的代碼寫在項(xiàng)目中,同步到 GitHub 上,同步的時(shí)候注意,在 GitHub 上創(chuàng)建項(xiàng)目的時(shí)候,項(xiàng)目名字以及介紹自己寫,其余的選擇默認(rèn)的最好。
同步完了要打 tag,可以直接在 GitHub 上打 tag
在本地項(xiàng)目文件夾中通過命令 pod spec create XXXXX 創(chuàng)建 podspec 文件,XXXXX最好就是你的項(xiàng)目名字。
修改 podspec 文件,大致如下:
#
# Be sure to run `pod spec lint GFCommonView.podspec' to ensure this is a
# valid spec and to remove all comments including this before submitting the spec.
#
# To learn more about Podspec attributes see http://docs.cocoapods.org/specification.html
# To see working Podspecs in the CocoaPods repo see https://github.com/CocoaPods/Specs/
#
Pod::Spec.new do |s|
# ――― Spec Metadata ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
#
# These will help people to find your library, and whilst it
# can feel like a chore to fill in it's definitely to your advantage. The
# summary should be tweet-length, and the description more in depth.
#
s.name = "CYTestCocoaPods"
s.version = "0.0.1"
s.summary = "Test CocoaPods"
s.description = <<-DESC
Test CocoaPods
DESC
s.homepage = "https://github.com/chenyu1520/CYTestCocoaPods"
s.license = "MIT"
s.author = { "chenyu" => "chenyu1520@gmail.com" }
s.platform = :ios, "8.0"
s.ios.deployment_target = "8.0"
s.source = { :git => "https://github.com/chenyu1520/CYTestCocoaPods.git", :tag => "#{s.version}" }
s.framework = "UIKit"
s.requires_arc = true
s.subspec 'MyTest' do |ssp|
ssp.source_files = 'CYTestCocoaPods/MyTest/*.{h,m}'
end
end
s.version 要和 GitHub 上的一致。
關(guān)于 Swift 的設(shè)置用如下命令:
echo "3.0" > .swift-version
驗(yàn)證 podspec 文件,采用忽略警告的方式:
pod spec lint CYTestCocoaPods.podspec --allow-warnings
注冊(cè):
pod trunk register chenyu1520@gmail.com 'ChenYu' --description='CYTestCocoaPods'
需要到郵箱點(diǎn)鏈接驗(yàn)證一下。
看提示或者查詢 trunk 后的信息:
pod trunk me
大致如下:
Name: ChenYu
Email: chenyu1520@gmail.com
Since: January 6th, 09:43
Pods: None
Sessions:
January 6th, 09:43 - May 14th, 09:46. IP: 221.217.221.173 Description: CYTestCocoaPods
最后執(zhí)行:
pod trunk push --allow-warnings
可以看到如下信息

雖然在終端中可能搜索不到,但是可以在其他項(xiàng)目中直接使用了。
制作私有 pod,有兩種方式:
- 每一個(gè)私有的 pod 制作好了以后,都單獨(dú)的添加到
/Users/xxx/.cocoapods/repos中,Podfile 文件中需要聲明 .git 地址。
這樣做會(huì)有一些弊端,一般 pod 庫(kù)都是放在一個(gè)工程中,在執(zhí)行pod repo add CYPods https://git.coding.net/ecanfly/MyPrivatePod.git的時(shí)候,會(huì)把工程中的所有文件同步過來(lái),在執(zhí)行pod repo push CYPods MyPrivatePod.podspec會(huì)報(bào)錯(cuò),說(shuō)在/Users/xxx/.cocoapods/repos/CYPods目錄下有不能提交的代碼,還需要做刪除操作,把 MyPrivatePod.podspec 以外的所有文件都刪除。有幾個(gè)文件可以不刪除,如果沒有刪除,其他項(xiàng)目組成員在 pull 代碼的時(shí)候,就會(huì)把這些文件 pull 下來(lái),增加存儲(chǔ)空間和 pull 的時(shí)間。 - 單獨(dú)創(chuàng)建一個(gè)倉(cāng)庫(kù),用來(lái)管理其他的 pod。單獨(dú)創(chuàng)建的這個(gè)倉(cāng)庫(kù)不需要
pod spec create XXXXX創(chuàng)建 podspec 文件。- 需要執(zhí)行幾個(gè)命令,把他存入
/Users/xxx/.cocoapods/repos中,命令如下:pod repo add CYPodSpec https://git.coding.net/ecanfly/CYPodSpec.git。注意https://git.coding.net/ecanfly/CYPodSpec.git是你遠(yuǎn)端已經(jīng)存在倉(cāng)庫(kù)。這里如果不成功,很有可能是不能正確的訪問 https://git.coding.net,這時(shí)候用 SourceTree 把代碼克隆一份到桌面,克隆的時(shí)候會(huì)讓你輸入 https://git.coding.net 的用戶名和密碼。再次執(zhí)行之前的命令就可以成功的在.cocoapods/repos中創(chuàng)建文件夾,并關(guān)聯(lián)到遠(yuǎn)端。 - 現(xiàn)在做好一個(gè)私有的庫(kù),并使用命令
pod spec create XXXXX創(chuàng)建 podspec 文件,修改這個(gè)文件結(jié)束后,通過pod lib lint xxx.podspec --verbose --use-libraries --allow-warnings做本地驗(yàn)證。沒有問題后打 tag 并 push 到遠(yuǎn)端。需要注意 podspec 文件夾中的 s.version 需要在遠(yuǎn)端有對(duì)應(yīng)的 tag。通過pod spec lint xxx.podspec --verbose --use-libraries --allow-warnings做遠(yuǎn)程驗(yàn)證。 - 通過
pod repo push CYPodSpec xxx .podspec --verbose --use-libraries --allow-warnings將私有庫(kù)放置在.cocoapods/repos/CYPodSpec文件夾下,這個(gè)命令自帶推送操作,會(huì)把 CYPodSpec 倉(cāng)庫(kù)同步到遠(yuǎn)端。 - 如果更新了 pod 庫(kù)
- 要修改 podspec 文件中的版本號(hào)
- 本地驗(yàn)證
- 打 tag 并推送到遠(yuǎn)端
- 遠(yuǎn)端驗(yàn)證
- 執(zhí)行
pod repo push CYPodSpec xxx .podspec --verbose --use-libraries --allow-warnings,CYPodSpec 中對(duì)應(yīng)的私有庫(kù)文件夾中會(huì)多出一個(gè)版本號(hào)對(duì)應(yīng)的文件夾,里面存放了 xxx .podspec 文件。
- 需要執(zhí)行幾個(gè)命令,把他存入
(如果是庫(kù)中拖拽了其他的庫(kù)當(dāng)源碼,遇到問題的話,可以參考下面的文檔)[http://m.itdecent.cn/p/8566983dae1f]