級別: ★★☆☆☆
標(biāo)簽:「iOS」「CocoaPods」「私有庫」
作者: 憶思夢
審校: QiShare團(tuán)隊
先說下CocoaPods拉取開源庫的原理:
CocoaPods 有一個開源的索引倉庫Specs漠趁,倉庫存放著所有開源庫的各個版本的.podspec
文件忍疾,.podspec
文件包含中記錄著源碼的地址。首次使用CocoaPods時甥绿,會將這個文件庫克隆到本地~/.cocoapods/repos/master
。
- 在Podfile目錄下執(zhí)行
pod install
命令洗出,會從本地的索引庫查找該庫的.podsepc
骄呼,如果本地不存在會從遠(yuǎn)程拉取最新的索引庫。 - 根據(jù)索引庫中查到的
.podspec
文件內(nèi)容隅茎,獲取源碼地址嫉沽。 - 從源碼地址拉取對應(yīng)版本的代碼。
使用是可以發(fā)現(xiàn)堂竟,首次導(dǎo)入一個開源庫時速度較慢玻佩,之后再導(dǎo)入時會很快。是因為CocoaPods在本地會有一個緩存目錄税稼,存放開源庫的源碼垮斯,首次下載后,再次導(dǎo)入該庫時扰肌,會直接從本地復(fù)制過去熊杨。
查看緩存列表使用
pod cache list
,緩存路徑為~/Library/Caches/CocoaPods/Pods/
。
私有倉庫
私有庫的創(chuàng)建
由于CocoaPods的索引倉庫是開源的夷狰,所有人都可以訪問。公司的項目如果也想使用CocoaPods管理源碼郊霎,而不開放源碼的話,我們可以通過創(chuàng)建私有倉庫來模擬官方的Specs倉庫爷绘。
步驟:
在私有g(shù)it上創(chuàng)建一個索引倉庫书劝,例:YSMSpecs进倍,用于存放索引文件。
-
將遠(yuǎn)程索引庫添加到本地购对,
pod repo add YSMSpecs YSMSpecs_source_url
猾昆。使用pod repo
可以查看本地的索引倉庫列表。$ 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
本地創(chuàng)建我們的源碼工程骡苞,可以使用
pod lib create YSMKit
垂蜗,創(chuàng)建一個模板工程解幽。在模板工程里進(jìn)行開發(fā)并替換 ReplaceMe 文件贴见,修改
.podspec
文件(版本號,源碼地址)躲株,推送到遠(yuǎn)程源碼倉庫片部,打tag,提交霜定。源碼倉庫部署完成档悠。-
CocoaPods不允許有Podspecs lints錯誤,所以需要進(jìn)行Podspecs lints(翻譯不好望浩,會檢查語法錯誤)驗證辖所。這里可以使用
pod lib lint
或者pod spec lint
,區(qū)別在于前者不會聯(lián)網(wǎng),而后者還會檢查外部的倉庫和相關(guān)的標(biāo)簽磨德。$ pod lib lint -> YSMKit (0.1.0) YSMKit passed validation.
-
檢查沒有錯誤之后缘回,推送
.podspec
文件到本地的索引倉庫,本地索引倉庫會自動push到遠(yuǎn)程索引倉庫剖张。pod repo push YSMSpecs YSMKit.podspec
切诀,這一步會自動進(jìn)行pod spec lint
聯(lián)網(wǎng)檢查。索引庫部分完成搔弄。$ 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 // 會自動推送到遠(yuǎn)程倉庫 $ 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倉庫中顾犹。
私有庫的使用
- 在宿主工程的Podifle文件中引入私有庫:
pod 'YSMKit'
- 在文件的最上方添加索引庫地址
source 'https://github.com/yisimeng/YSMSpecs.git'
source 'https://github.com/CocoaPods/Specs.git'
然后執(zhí)行 pod install倒庵,就可以使用了。
注意: 如果用到了其他開源庫的話炫刷,一定要加上官方Specs地址擎宝,否則只會去查找私有索引庫。
私有庫的維護(hù)
后續(xù)需要更新維護(hù)倉庫代碼的流程:
- 在源碼工程修改代碼之后浑玛,修改
.podspec
文件版本號绍申,把源碼提交,打上tag,推送到遠(yuǎn)程倉庫极阅。 - 把
.podspec
文件提交到本地的私有索引庫中(會自動幫我們提交到遠(yuǎn)程索引庫)胃碾。 - 回到宿主工程,修改Podfile中的版本筋搏,執(zhí)行
pod install
(不行就pod update
)仆百。
注意事項
- 在podfile文件中 增加
inhibit_all_warnings!
,這樣pod的工程不會顯示任何警告奔脐。 - 切記:swift中需要設(shè)置好訪問權(quán)限6碇堋!!
- 新引入一些庫之后執(zhí)行
pod install
髓迎,會報錯Build Settings峦朗,例如:引入Swift庫之后經(jīng)常會報的“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
:編譯之前可以添加修改(還沒想到可以做哪些事情)。
了解更多iOS及相關(guān)新技術(shù)涣雕,請關(guān)注我們的公眾號:
關(guān)注我們的途徑有:
QiShare(簡書)
QiShare(掘金)
QiShare(知乎)
QiShare(GitHub)
QiShare(CocoaChina)
QiShare(StackOverflow)
QiShare(微信公眾號)
推薦文章:
iOS 簽名機(jī)制
iOS 掃描二維碼/條形碼
iOS 了解Xcode Bitcode
iOS 重繪之drawRect
奇舞周刊