整體說明一下創(chuàng)建私有podspec的步驟:
1,創(chuàng)建一個遠程的git庫用于存儲代碼,將新建的git庫clone到本地,添加需要導(dǎo)入pod庫中的代碼。
2,創(chuàng)建并設(shè)置一個私有的Spec Repo。
3,在本地git庫文件夾中創(chuàng)建pod所對應(yīng)的podspec文件。
4,本地測試配置好的podspec文件是否可用。
5,向私有的spec repo中提交podspec。
6,在項目中的Podfile中增加剛剛制作好的Pod并使用。
7,后續(xù)更新維護podspec。
一,創(chuàng)建私有的Spec Repo
什么是 Spec Repo ? 它是所有的 Pods 的一個索引,就是一個容器,所有公開的 Pods 都在這個里面,它實際是一個 Git 倉庫 remote 端在 GitHUb 上,但是當(dāng)你使用了 CocoaPods 后它會被 clone 到本地的 ~/.cocoapods/repos 目錄下。第一步先創(chuàng)建遠端的 GitHub,并clone到本地:
git clone git@github.com:Cuidawang/CKYTool.git

創(chuàng)建之后在 Terminal 中執(zhí)行如下命令:
# pod repo add [Private Repo Name] [GitHub HTTPS clone URL]
$ pod repo add CKYTool git@github.com:Cuidawang/CKYTool.git
此時如果成功的話,進入 ~/.cocoapods/repos 目錄下就可以看見 CKYTool 這個目錄了。到這第一步就完成了。
PS: 如果有其他合作人員共同使用這個私有Spec Repo的話在他有對應(yīng)Git倉庫的權(quán)限的前提下執(zhí)行相同的命令添加這個Spec Repo即可。
二,添加需要的代碼文件到CKYTool目錄下
比如我選取了一個文件管理和一個分類的文件進行測試,將這兩個文件添加到 CKYTool 中,

三,創(chuàng)建項目的podspec文件
使用終端命令cd到CKYTool文件下執(zhí)行命令:
pod spec create CKYTool
這時候本地會生成一個 CKYTool.podspec 文件,使用 sublime 打開 CKYTool.podspec 文件,刪除不必要的注釋,最后的文件形式如下:
Pod::Spec.new do |s|
s.name = "CKYTool" #名稱
s.version = "0.0.1" #版本號
s.summary = "CKYTool." #簡短介紹
s.description = <<-DESC
對這個pod文件進行描述,這的描述要比summary的長。
DESC
s.homepage = "https://github.com/Cuidawang/CKYTool" #主頁
s.license = "MIT" #開源協(xié)議
s.author = { "Cuikeyi" => "https://github.com/Cuidawang/CKYTool" }
s.platform = :ios, "8.0"
s.source = { :git => "https://github.com/Cuidawang/CKYTool.git", :tag => "#{s.version}" }
s.header_dir = "CKYTools" #Pod安裝之后的文件名
s.requires_arc = true
s.subspec 'XHCCategories' do |ss|
ss.header_dir = 'XHCCategories'
ss.subspec 'NSDate' do |sss|
sss.source_files = "XHCTools/XHCCategories/NSDate/**/*.{h,m}",
sss.header_dir = 'NSDate'
end
ss.subspec 'NSString' do |sss|
sss.source_files = "XHCTools/XHCCategories/NSString/**/*.{h,m}",
sss.header_dir = 'NSString'
end
ss.subspec 'NSDate' do |sss|
sss.source_files = "XHCTools/XHCCategories/NSDate/**/*.{h,m}",
sss.header_dir = 'NSDate'
end
ss.subspec 'UIButton' do |sss|
sss.source_files = "XHCTools/XHCCategories/UIButton/**/*.{h,m}",
sss.header_dir = 'UIButton'
end
ss.subspec 'UIColor' do |sss|
sss.source_files = "XHCTools/XHCCategories/UIColor/**/*.{h,m}",
sss.header_dir = 'UIColor'
end
ss.subspec 'UIImage' do |sss|
sss.source_files = "XHCTools/XHCCategories/UIImage/**/*.{h,m}",
sss.header_dir = 'UIImage'
end
ss.subspec 'UIView' do |sss|
sss.source_files = "XHCTools/XHCCategories/UIView/**/*.{h,m}",
sss.header_dir = 'UIView'
end
end
s.subspec 'XHCFileManager' do |ss|
ss.source_files = "XHCTools/XHCFileManager/**/*.{h,m}",
ss.header_dir = 'XHCFileManager'
end
end
文件中的字段說明參考:http://guides.cocoapods.org/syntax/podspec.html
編輯完 podspec 文件后,需要驗證一下這個文件是否可用,如果有任何的 Warning 或者 Error 都是不可以的,它就不能被添加到 Spec Repo 中,不過 xcode 的 Warning 是可以存在的,驗證需要執(zhí)行一個命令
pod lib lint
當(dāng)如下圖時,表示驗證通過了

Tips:
1,去除Xcode的警告,可以通過命令屏蔽警告:
pod lib lint --allow-warnings
2,如果出現(xiàn)Error但是提示信息不足,可以添加 --verbose 以獲取更多的錯誤信息
pod lib lint --verbose
四,提交文件到github,打tag,上傳podspec
1,提交文件到github
git add .
git commit -m "first commit"
git pull origin master
git push origin master
2,提交tag
git tag -m "release 0.0.1" 0.0.1
git push --tags
3,上傳podspec
pod repo push CKYTool CKYTool.podspec #前面是本地Repo名字 后面是podspec名字
至此,我們的這個組件庫就已經(jīng)制作添加完成了,使用 pod search CKYTool 就可以找到這個庫了。
Tips:
1,提交文件的順序不能改變,一定要先提交tag標(biāo)簽,之后再上傳podspec。否則會上傳podspec失敗。
2,對于 .podspec 文件,一定要放在文件的最外層,不然就報錯。
五,使用制作好的Pod
在完成這一系列步驟后,我們就可以在正式的項目中使用這個私有的Pod了只需要在Podfile文件中添加:
platform :ios, "8.0"
# source 是pod去哪下載地址,寫多個source會從上到下一次去加載
source 'https://github.com/Cuidawang/CKYTool.git'
source 'https://github.com/CocoaPods/Specs.git'
target "XXXX" do
pod 'CKYTool'
end
然后執(zhí)行 pod update ,更新依賴庫,就可以看見自己的庫文件出現(xiàn)在 Pods 子目錄中,而不是 Development Pods 中。
Tips:
1,引用使用文件的時候,引用方式為 #import <NSString/NSString+URLEncoding.h>, 就可以找到文件的路徑了。
2,也可以在Target -> Build Settings -> User Header Search Paths 中點擊加號,添加 $(PODS_ROOT) ,后邊設(shè)置成recursive,此時可以通過 #import "NSString+URLEncoding.h" 引入頭文件。
六,關(guān)于Pod的升級
當(dāng)前的版本是0.0.1,如果我們增加了一些代碼文件,更新了一些代碼,此時要發(fā)布0.0.2版本,需要怎么做呢?
1,修改代碼文件,更新代碼完畢之后,并更新 CKYTool.podspec 文件,修改s.version = '0.0.2',都修改完成之后,通過 pod lib lint 驗證 podspec 文件是否有效,如果有效,進行下一步。
2,驗證通過之后,提交自己的代碼到git,然后打tag 0.0.2,(一定要打tag和s.verisonxiang相對應(yīng)),然后提交tag。
3,提交完tag之后,接著上傳podspec, pod repo push CKYTool CKYTool.podspec。此時 pod search CKYTool 就會發(fā)現(xiàn)0.0.2版本了。
七,刪除和添加 Spec Repo
1, 刪除一個私有的 Spec Repo:
pod repo remove CKYTool
2,添加
pod repo add CKYTool git@github.com:Cuidawang/CKYTool.git
如果我們要刪除私有Spec Repo下的某一個podspec怎么操作呢,此時無需借助Cocoapods,只需要cd到~/.cocoapods/repos/WTSpecs目錄下,刪掉庫目錄
八,參考資料
http://blog.wtlucky.com/blog/2015/02/26/create-private-podspec/