私有庫的步驟:
1.在gitee創(chuàng)建兩個庫,一個代碼庫SYYBaseLib_Swift,一個spec庫SYYBaseLibSpec_Swift
2.pod lib create SYYBaseLib-Swift創(chuàng)建代碼庫項目
3.修改podspec,
4.驗證podspec
5.提交項目到gitee
6.拉取spec庫:pod repo add SYYBaseLibSpec-Swift https://gitee.com/suyongyaogit/SYYBaseLibSpec-Swift.git
7.推送spec庫:pod repo push SYYBaseLibSpec_Swift SYYBaseLib_Swift.podspec --allow-warnings
8.測試

創(chuàng)建完兩個庫就可以開始以下的工作了。
1.創(chuàng)建項目:pod lib create SYYBaseLib_Swift
這個命令行是創(chuàng)建一個Lib項目,用來上傳到gitee的項目庫的,這句代碼會創(chuàng)建好一個Lib的庫,自動生成好需要的文件。

創(chuàng)建好項目以后,通常我們會先cd到Example里面去pod install一下確保沒問題。
創(chuàng)建好以后打開lib的文件夾(SYYBaseLib_Swift)

SYYBaseLib-Swift文件夾會有Assets和Classes,Assets是存放圖片的,Classes是存放自己寫的類的,Classes已經(jīng)自動生成了一個類,可以直接替換成自己的類就行.
但是這里我們先不替換,現(xiàn)在這個類里面先寫一個方法,等下pod "SYYBaseLib-Swift"后用來調(diào)用一下測試一下,測試通過了我們再替換成自己寫的類再上傳到gitee來
2.修改SYYBaseLib-Swift.podspec文件
Pod::Spec.new do |s|
s.name = 'SYYBaseLib_Swift'#項目名
s.version = '0.0.1'#版本
s.swift_versions = ['5.0']#驗證的時候使用的swift版本
s.summary = '一個Swift的基礎(chǔ)框架.'#簡介
#s.description詳細介紹
s.description = <<-DESC
TODO: 一個Swift的基礎(chǔ)框架,包含一些常用的方法,包含類,擴展,和一些原生代碼的封裝,比如封裝一下WebView,SQLite,和Network等
DESC
s.homepage = 'https://gitee.com/suyongyaogit/SYYBaseLib_Swift.git'#項目的主頁
# s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
s.license = {
:type => 'MIT',
:file => 'LICENSE'
}
#開發(fā)者的賬號和郵箱,如果是gitee的就寫gitee的賬號和郵箱就行
s.author = { 'suyongyaogit' => '823895643@qq.com' }
s.source = {
:git => 'https://gitee.com/suyongyaogit/SYYBaseLib_Swift.git',#項目地址,這里一定要對
:tag => s.version.to_s
}
# s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
s.ios.deployment_target = '13.0'#最低版本要求
s.source_files = 'SYYBaseLib_Swift/Classes/**/*.swift'#上傳的文件格式
#s.source_files = 'SYYBaseLib_Swift/Classes/**/*.{h,m,swift}'#如果文件里有.h,.m.swift,就這樣寫
#資源目錄
s.resource_bundles = {
'SYYBaseLib_Swift' => ['SYYBaseLib_Swift/Assets/Assets.xcassets'],
}
# s.public_header_files = 'Pod/Classes/**/*.h'
# s.frameworks = 'UIKit', 'MapKit'
s.dependency 'Alamofire', '~> 5.6.4'#依賴庫
s.dependency 'HandyJSON'
s.dependency 'SVProgressHUD'
s.dependency 'ESTabBarController-swift'
s.dependency 'FMDB'
s.dependency 'Hue'
s.dependency 'IQKeyboardManagerSwift', '~> 6.5.0'
s.dependency 'Kingfisher'
s.dependency 'MJRefresh'
s.dependency 'SnapKit'
s.dependency 'SwiftDate'
s.dependency 'XHLaunchAd'
end
改完這個文件夾之后會需要驗證一下改的對不對,如果驗證失敗上傳到gitee也沒用(按照上面中文注釋改,一般都會通過),cd到SYYBaseLib-Swift,是Example前面的SYYBaseLib-Swift,執(zhí)行命令:
pod lib lint --allow-warnings --verbose
如果驗證成功會打印
SYYBaseLib-Swift passed validation.
如果失敗,就執(zhí)行命令行:
pod lib lint --allow-warnings --no-clean 查看失敗的原因,改好重新驗證就行
驗證成功會報這個:SYYBaseLib_Swift passed validation.

2.提交項目(或者直接用SourceTree提交也行,記得標簽一定要寫自己的版本號)
git status
git add .
git commit -m ‘AkTalkKit 庫上傳’
# 將本地庫與遠程庫進行關(guān)聯(lián)
git remote add origin SYYBaseLib_Swift https://gitee.com/suyongyaogit/SYYBaseLibSpec_Swift.git # 此處為實際git地址
git push origin master
git tag '0.0.1' # 要與實際版本一樣
git push --tags
項目庫的工作基本完成了,輪到spec索引庫
3.拉取索引庫(cd 到cd /Users/suyongyao/SYYBaseLib_Swift)
pod repo add SYYBaseLibSpec_Swift https://gitee.com/suyongyaogit/SYYBaseLibSpec_Swift.git
這句命令后會在/Users/suyongyao/.cocoapods/repos自動生成SYYBaseLibSpec_Swift文件夾用于管理spec
4.推送spec
pod repo push SYYBaseLibSpec_Swift SYYBaseLib_Swift.podspec --allow-warnings
這句命令后會自動在/Users/suyongyao/.cocoapods/repos/SYYBaseLibSpec_Swift生成一個文件夾
然后用sourcetree把SYYBaseLibSpec_Swift推送到gitee的spec庫去
5.完成后就可以測試了,在項目中的Podfile文件中:
# 指定所有 Spec 倉庫來源(包括私有和官方)
source 'git@gitee.com:suyongyaogit/SYYBaseLibSpec_Swift.git' # 私有 Spec 倉庫#這里要注意建立倉庫的時候選擇私有庫還是公開源的問題,公開庫用http格式,私有庫用SSH格式
source 'https://github.com/CocoaPods/Specs.git' # 官方倉庫
target 'MyApp' do
pod 'SYYBaseLib_Swift', '~> 0.0.1' # 從私有 Spec 倉庫解析依賴
end
到這一步這個庫應(yīng)該是可以使用了,但是用著用著你就會發(fā)現(xiàn)兩個問題:
1.pod install下來的庫里面的文件是沒有分級的,沒有按你自己在本地上分級,而是一股腦的在SYYBaseLib文件下面。
2.自己使用的是swift,而庫里面有用到oc的,應(yīng)該怎么調(diào)用
3.版本管理怎么做?
1.文件分層,看SYYBaseLib_Swift.podspec文件里面source_files,使用s.source_files = 'SYYBaseLib_Swift/Classes/*.{h,swift}'就只會上傳全部文件,而不會分級,要想分級要用下面的方法:

s.source_files = 'SYYBaseLib_Swift/Classes/*.{h,swift}'
s.subspec 'Category' do |ss|
ss.source_files = 'SYYBaseLib_Swift/Classes/Category/*.{h,m}'
end
s.subspec 'Macro' do |ss|
ss.source_files = 'SYYBaseLib_Swift/Classes/Macro/*.swift'
end
這樣做文件的分層,如果Macro是在Category里面的話,那么關(guān)于Macro的文件管理要包含在Category里,如:
s.source_files = 'SYYBaseLib_Swift/Classes/*.{h,swift}'
s.subspec 'Category' do |ss|
ss.source_files = 'SYYBaseLib_Swift/Classes/Category/*.{h,m}'
ss.subspec 'Macro' do |sss|
sss.source_files = 'SYYBaseLib_Swift/Classes/Macro/*.swift'
end
end
這樣pod下來的文件就會分好層了,如:

2.swift調(diào)用OC
需要使用public_header_files,如:

s.source_files = 'SYYBaseLib_Swift/Classes/*.{h,swift}'
s.public_header_files = 'SYYBaseLib_Swift/Classes/SYYBaseLib.h'
s.subspec 'Category' do |ss|
ss.source_files = 'SYYBaseLib_Swift/Classes/Category/*.{h,m}'
ss.public_header_files = 'SYYBaseLib_Swift/Classes/Category/*.h'
end
s.subspec 'Macro' do |ss|
ss.source_files = 'SYYBaseLib_Swift/Classes/Macro/*.swift'
end
我在Classes下面和Category下面都有OC的代碼,那么就要分別在Classes和Category下面使用ss.public_header_files這個屬性
3.版本更新
版本更新的時候把需要修改的東西修改好之后,修改SYYBaseLib_Swift.podspec文件的s.version = '0.0.2'#版本,cd 到Example去pod install一下,保證上傳到gitee的代碼和你修改的一致,然后驗證:pod lib lint --allow-warnings --no-clean或者pod lib lint --allow-warnings --verbose驗證完之后會報驗證成功:SYYBaseLib_Swift passed validation.,然后按上面的上傳到gitee,/Users/suyongyao/.cocoapods/repos/SYYBaseLibSpec_Swift/SYYBaseLib_Swift文件夾里面新增文件夾,名字就是版本號,如:0.0.2,在代碼庫SYYBaseLib_Swift中把SYYBaseLib_Swift.podspec拷貝過來,然后上傳到到gitee,這樣就可以了