目的
不知道小伙伴們會在什么樣的情況下用到私有庫。我最初是在組件化拆分項(xiàng)目,接觸到這個(gè)概念。項(xiàng)目解耦拆分成功之后,需要通過cocoapods創(chuàng)建和管理私有庫。再次建立私有庫,是因?yàn)轫?xiàng)目需要一個(gè)公共的基礎(chǔ)模塊。
建立cocoapods私有庫步驟
1.在gitlabel或者coding.net上創(chuàng)建一個(gè)倉庫,用來管理代碼和版本控制。
2.創(chuàng)建LICENSE文件,這個(gè)文件一定要?jiǎng)?chuàng)建,不然無法提交到cocoapods。
3.在文件所在位置,創(chuàng)建podspec文件,并且配置相關(guān)信息。
Pod::Spec.new do |s|
#名字
s.name = "Text"
#版本號
s.version = "0.0.1"
#摘要
s.summary = "測試私有庫創(chuàng)建"
#描述
s.description = <<-DESC
This is a base component library that can be used for all project base files.
DESC
#倉庫地址
s.homepage = "倉庫地址"
#寫死即可
s.license = "MIT"
#創(chuàng)建者郵箱
s.author = { "linxia" => "xxxxxx@xxx.com" }
#支持系統(tǒng)
s.platform = :ios, "8.0"
#源地址和版本
s.source = { :git => "倉庫地址", :tag => "#{s.version}" }
s.requires_arc = true
#私有庫文件
s.source_files = 'Text/**/*.{h,m}'
#私有庫資源文件這里不僅僅是bundle文件,例如xib等
s.resources = 'Text/**/*.{bundle}'
#依賴庫,如果你要導(dǎo)入這個(gè)私有庫,一下庫如果在你的工程里面沒有導(dǎo)入,就會一起導(dǎo)入。如果已經(jīng)導(dǎo)入也不會重復(fù)導(dǎo)入。
s.dependency 'AFNetworking', '3.1.0'
s.dependency 'Masonry', '1.1.0'
s.dependency 'SDWebImage', '4.2.1'
s.dependency 'MJExtension', '3.0.13'
s.dependency 'MBProgressHUD', '1.0.0'
s.dependency 'MJRefresh', '3.1.15'
s.dependency 'TPKeyboardAvoiding', '1.3.1'
s.dependency 'DZNEmptyDataSet', '1.8.1'
#下面注釋部分是拆分,具體的意思就是把項(xiàng)目中的某一個(gè)模塊拆分出來,可以單獨(dú)的給其它地方使用。
# s.subspec 'oneText' do |oneText|
# oneText.source_files = 'OneText/OneText/**/*.{h,m}'
# oneText.dependency 'XTesting/core'
# end
# s.subspec 'twoText' do |twoText|
# twoText.source_files = 'TwoText/TwoText/**/*.{h,m}'
# twoText.resources = 'TwoText/TwoText/**/*.{xib}'
# twoText.dependency 'XTesting/core'
# end
end
驗(yàn)證 pod lib lint Text.podspec --allow-warnings --use-libraries --verbose
source_file 路徑要配置正確,如果驗(yàn)證報(bào)錯(cuò)--verbose 會給你提示,解決響應(yīng)的錯(cuò)誤,直到驗(yàn)證通過為止。
驗(yàn)證通過會顯示綠色文字:Text passed validation
- 建立與私有倉庫的關(guān)聯(lián),并且將本地的文件上傳到私有倉庫。
1.git init
2.git add -A (提交本地所有文件)
3.git commit -m “提交說明”
4.git remote add origin git倉庫地址
5.git push origin 遠(yuǎn)程分支或者主分支
如果已經(jīng)關(guān)聯(lián)過,只需要直接2,3,5步驟
如果你是sourceTree管理,提交代碼即可(podspec也要放在跟工程文件,提交到倉庫里面去)
5.給項(xiàng)目打上tag
git tag 1.0.0
注意:tag的值要跟podspec文件中的s.version對應(yīng)
git push - -tag
6.注冊trunk
注冊郵箱和用戶名:pod trunk register XXX@XXX.com '名字' --verbose
查看注冊信息:pod trunk me
7.在本地建立私有庫
在這之前,我們可以在驗(yàn)證一下podspec文件是否可以驗(yàn)證通過
pod spec lint 庫名.podspec --allow-warnings --use-libraries --verbose
pod repo add 私有庫文件夾名字 git倉庫地址
8.將私有庫提交到pods
pod repo push 私有庫文件夾名字 Text.podspec --allow-warnings --use-libraries --verbose
pod trunk push Text.podspec --allow-warnings --use-libraries --verbose
9.上傳成功之后,pod setup更新。然后pod search 搜索庫文件。可以搜索到就成功了。
問題
1.搜索庫文件報(bào)錯(cuò),An unexpected version directory Assets was encountered for the /Users/yanyan/.cocoapods/repos/ Pod in the YYLib repository.
解決辦法,進(jìn)入文件指定路徑,將對應(yīng)的文件夾刪除即可。
2. [!] Unable to find a pod with name, author, summary, or descriptionmatching iOS\-AlipaySDK
rm ~/Library/Caches/CocoaPods/search_index.json
解決辦法,替換pod搜索文件
~/Library/Caches/CocoaPods/search_index.json
使用私有庫
添加私有 repo 到 podfile,同時(shí)還需要添加原 pod master 倉庫,如下:source https://git.xxx.com/spec.git ’
source 'https://github.com/CocoaPods/Specs.git
將要使用的組件添加至 Podfile, pod install即可
如果私有庫沒有更新版本,直接刪除tag值,然后合并代碼,再重新打上tag的版本。想要獲取到最新的版本的代碼。請先更新本地repo庫為最新。然后刪除cocoapods本地存在的記錄即可。
命令如下:
pod repo update 私有庫名字。
CocoaPods 的緩存(~/Library/Caches/CocoaPods/Pods/Release 目錄),刪除此目錄下你的 私有庫的文件夾。
結(jié)尾
文章為自己創(chuàng)建私有庫使用的步驟,如果你有任何問題,或者以上描述有問題,都可以告知我,我會更正問題。期待一起討論,共同進(jìn)步。