先說下CocoaPods拉取開源庫的原理:git
CocoaPods 有一個開源的索引倉庫Specs,倉庫存放着全部開源庫的各個版本的.podspec
文件,.podspec
文件包含中記錄着源碼的地址。首次使用CocoaPods時,會將這個文件庫克隆到本地~/.cocoapods/repos/master
。github
pod install
命令,會從本地的索引庫查找該庫的.podsepc
,若是本地不存在會從遠程拉取最新的索引庫。.podspec
文件內容,獲取源碼地址。使用是能夠發現,首次導入一個開源庫時速度較慢,以後再導入時會很快。是由於CocoaPods在本地會有一個緩存目錄,存放開源庫的源碼,首次下載後,再次導入該庫時,會直接從本地複製過去。swift
查看緩存列表使用
pod cache list
,緩存路徑爲~/Library/Caches/CocoaPods/Pods/
。緩存
因爲CocoaPods的索引倉庫是開源的,全部人均可以訪問。公司的項目若是也想使用CocoaPods管理源碼,而不開放源碼的話,咱們能夠經過建立私有倉庫來模擬官方的Specs倉庫。bash
步驟:微信
在私有git上建立一個索引倉庫,例:YSMSpecs,用於存放索引文件。post
將遠程索引庫添加到本地,pod repo add YSMSpecs YSMSpecs_source_url
。使用pod repo
能夠查看本地的索引倉庫列表。ui
$ pod repo add YSMSpecs https://github.com/yisimeng/YSMSpecs.git
$ pod repo
master // 公有索引倉庫
- Type: git (master)
- URL: https://github.com/CocoaPods/Specs.git
- Path: /Users/duanzengguang/.cocoapods/repos/master
YSMSpecs //私有索引倉庫
- Type: git (master)
- URL: https://github.com/yisimeng/YSMSpecs.git
- Path: /Users/duanzengguang/.cocoapods/repos/YSMSpecs
複製代碼
本地建立咱們的源碼工程,可使用pod lib create YSMKit
,建立一個模板工程。url
在模板工程裏進行開發並替換 ReplaceMe 文件,修改.podspec
文件(版本號,源碼地址),推送到遠程源碼倉庫,打tag,提交。源碼倉庫部署完成。
CocoaPods不容許有Podspecs lints錯誤,因此須要進行Podspecs lints(翻譯很差,會檢查語法錯誤)驗證。這裏可使用pod lib lint
或者pod spec lint
,區別在於前者不會聯網,然後者還會檢查外部的倉庫和相關的標籤。
$ pod lib lint
-> YSMKit (0.1.0)
YSMKit passed validation.
複製代碼
檢查沒有錯誤以後,推送.podspec
文件到本地的索引倉庫,本地索引倉庫會自動push到遠程索引倉庫。pod repo push YSMSpecs YSMKit.podspec
,這一步會自動進行pod spec lint
聯網檢查。索引庫部分完成。
$ pod repo push YSMSpecs YSMKit.podspec
Validating spec
-> YSMKit (0.1.0)
Updating the `YSMSpecs' repo Already up to date. Adding the spec to the `YSMSpecs' repo
- [Add] YSMKit (0.1.0)
Pushing the `YSMSpecs' repo // 會自動推送到遠程倉庫 $ pod search YSMKit -> YSMKit (0.1.0) YSMKit is my kit pod 'YSMKit', '~> 0.1.0' - Versions: 0.1.0 [YSMSpecs repo] 複製代碼
到這裏私有倉庫是搞完了。
第6步若是使用
pod trunk push YSMKit.podspec
,會將索引庫推送到官方的Specs倉庫中。
pod 'YSMKit'
source 'https://github.com/yisimeng/YSMSpecs.git'
source 'https://github.com/CocoaPods/Specs.git'
複製代碼
而後執行 pod install,就可使用了。
注意: 若是用到了其餘開源庫的話,必定要加上官方Specs地址,不然只會去查找私有索引庫。
後續須要更新維護倉庫代碼的流程:
.podspec
文件版本號,把源碼提交,打上tag,推送到遠程倉庫。.podspec
文件提交到本地的私有索引庫中(會自動幫咱們提交到遠程索引庫)。pod install
(不行就pod update
)。inhibit_all_warnings!
,這樣pod的工程不會顯示任何警告。pod install
,會報錯Build Settings,例如:引入Swift庫以後常常會報的「swift version」的錯誤,須要去修改Build Setting,其實能夠在Podfile中的post_install
中修改。post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '3.2'
end
end
end
複製代碼
pre_install
:編譯以前能夠添加修改(還沒想到能夠作哪些事情)。
小編微信:可加並拉入《QiShare技術交流羣》。
關注咱們的途徑有:
QiShare(簡書)
QiShare(掘金)
QiShare(知乎)
QiShare(GitHub)
QiShare(CocoaChina)
QiShare(StackOverflow)
QiShare(微信公衆號)
推薦文章:
iOS 簽名機制
iOS 掃描二維碼/條形碼
iOS 瞭解Xcode Bitcode
iOS 重繪之drawRect
奇舞週刊