前言
僅內(nèi)部人員使用
之前操作私有庫做法與公開庫的做法類似,結(jié)果在目錄~/.cocoapods/repos下出現(xiàn)的情況是版本描述與代碼都出現(xiàn)在了這里。

以上這種情況使用Pod應(yīng)用是可以拉取到代碼的,但是我在嘗試版本迭代的時候?qū)τ诎姹究刂频男r炁cpush就相當(dāng)?shù)幕靵y,這么說吧,我一次沒成功。
所以我們需要創(chuàng)建兩個庫
一個版本庫
一個代碼庫
正文
首先是版本庫

上面是私有庫,使用終端將版本倉庫加載到本地
$ pod repo add TESTLibrary https://git.artron.net/pod/TESTLibrary.git
此時在目錄~/.cocoapods/repos下出現(xiàn)一個TESTLibrary的版本庫

然后是代碼庫
創(chuàng)建一個名為TEST的代碼庫,創(chuàng)建時需要添加MIT License
添加License時選擇模板 MIT

以上是代碼庫,將代碼庫克隆到本地,添加幾項必須的文件
倉庫名.podspec
.swift-version
需要使用的代碼文件
WechatIMG6.png
ps:隱藏文件顯示mac版本command + shift + >
.swift-version創(chuàng)建
$ echo "4.2" > .swift-version
.podspec創(chuàng)建
$ pod spec create TEST
文件創(chuàng)建
創(chuàng)建文件夾,將需要的代碼放入,這里比較重點的是文件路徑,需要格外注意
下面是.podspec的設(shè)置
Pod::Spec.new do |spec|
spec.name = "TEST" #項目名稱
spec.version = "0.0.1" #項目版本號
spec.summary = " Today is the Lantern Festival, and I hope all goes well in 2019" #項目描述
spec.requires_arc = true # 是否啟用ARC
spec.platform = :ios, "8.0" #平臺及支持的最低版本
spec.swift_version = "4.2" #swift版本 如果代碼中有swift文件
spec.social_media_url = "https://git.artron.net/liuwei" # 個人主頁
spec.description = "LICENSE" } #許可證
spec.author = { "劉威" => "liuwei@artron.net" } #主頁地址
spec.source = { :git => "https://git.artron.net/pod/TEST.git", :tag => "#{spec.version}" } #源地址,后面指向版本號(做好tag)
spec.source_files = "TEST/*.{h,m}","TEST/*.swift" #這個是文件地址,重要的就是這個,也經(jīng)常出問題
spec.exclude_files = "TEST/Exclude"
# spec.public_header_files = "Classes/**/*.h"
#以下是庫的依賴使用 2 個公共庫一個私有庫
spec.dependency 'SDWebImage', '~> 3.8.2'
spec.dependency 'SwiftHTTP','~>3.0.0'
spec.dependency 'TESTRely','~>0.0.1'
end
此時可以去校驗倉庫正確性
$ pod lib lint
我設(shè)置的.summary是存在問題的,但是至少警告??可以忽略,修改驗證
$ pod lib lint --allow-warnings
這里插入校驗遇到的常見問題,以上述配置為例子
1.source_files這個在校驗時總是出問題,仔細(xì)檢驗正確性
2'TESTRely','~>0.0.1'這個是我自己另外一個私有庫,如果校驗的話是需要緊跟--sources地址的,具體就修改為$ pod lib lint --soures=https://git.artron.net/pod/TESTRelyLibrary.git,https://github.com/CocoaPods/Specs.git --allow-warnings
其中TESTRelyLibrary是TESTRely的版本管理庫
3.dependency這個參數(shù)設(shè)置必須需要指定版本號
4.dependency這個設(shè)置私有庫,如果公開庫上存在相同項目名稱的話,會先去公開庫上校驗,pod處理也是同樣的問題,除非公開庫上的版本號與自己設(shè)置的版本號匹配不上才回去私有庫校驗。所以無論哪個庫的創(chuàng)建,保證自己不重名。
5.dependency我設(shè)置了,不需要的可以忽略,以上僅僅是測試
驗證沒問題之后是
-> TEST (0.0.1)
TEST passed validation.
接下來的操作是
1.在打tag之前把本地的修改push到git上,如果某些順序出問題可以校驗tag并刪除錯誤tag
$ git tag
$ git tag -d 版本號
$ git push origin :refs/tags/版本號
2.打tag,保證tag與version(.podspec中)保持一致 (0.0.1)
$ git tag 0.0.1
$ git push --tags
3.將代碼庫的描述文件.podspec推送到版本管理庫中
$ pod repo push TESTLibrary TEST.podspec --allow-warnings
之所以跟著--allow-warnings是因為之前說過的.summary存在問題,否則push不成功。
以上操作完成之后會在~/.cocoapods/repos新增了倉庫描述信息

到這里就可以進(jìn)行search操作查看信息了
$ pod search TEST
WechatIMG8.png
接下來是使用
在Podfile中需要指定私有庫地址,如果引用了公用庫還需要公有庫地址,我的例子中還引用了私有庫(私有庫引用私有庫)所以還需要把引用的私有庫的地址也帶上https://git.artron.net/pod/TESTRelyLibrary.git
source 'https://github.com/CocoaPods/Specs.git'
source 'https://git.artron.net/pod/TESTLibrary.git'
source 'https://git.artron.net/pod/TESTRelyLibrary.git'
platform :ios, '8.0'
target 'your_project' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
pod 'TEST','0.0.5'
end
測試
$ pod install
WechatIMG9.png
參考資料
主要資料:
CocoaPods 私有倉庫的創(chuàng)建(超詳細(xì)) (按照該篇寫的,補(bǔ)充了自己遇到的問題)
其余相關(guān)資料:
CocoaPods公有倉庫的創(chuàng)建
使用cocoapods打包靜態(tài)庫(依賴私有庫,開源庫,私有庫又包含靜態(tài)庫)
使用私有Cocoapods倉庫 中高級用法
podspec文件解析


