前言:
公司最近打算搭建一個(gè)私有的pod庫(kù),我以前也是一個(gè)只會(huì)很小白地用一下pod再来,拉幾個(gè)有名的第三方庫(kù)床绪。花了不到一個(gè)工作日其弊,pod私有庫(kù)算是搭建成功,包括如何進(jìn)行多人維護(hù)也理清楚了膀斋。
所以呢梭伐,把整個(gè)理解的過程記錄下來,供公司內(nèi)部使用仰担,順便也和大家分享一下糊识。
提醒:
本文不涉及如何搭建私人git服務(wù)器
本文目錄
- CocoaPods安裝
- 簡(jiǎn)單使用CocoaPods
- CocoaPods公有和私有庫(kù)的區(qū)別
- git遠(yuǎn)程倉(cāng)庫(kù)與CocoaPods遠(yuǎn)程倉(cāng)庫(kù)
- 如何搭建并維護(hù)私有庫(kù)
一. CocoaPods安裝
這個(gè)配置環(huán)境的過程,就不多贅述了
二. 簡(jiǎn)單使用CocoaPods
- 在項(xiàng)目根目錄下
pod init
摔蓝,初始化操作- 會(huì)在根目錄下生成一個(gè)Profile文件赂苗,用過的應(yīng)該都有所了解
主要強(qiáng)調(diào):根據(jù)這個(gè)文件就能夠找到Pod倉(cāng)庫(kù)下的指定版本的第三方庫(kù)的.podspec文件(后面會(huì)講到)- Profile文件修改好以后,執(zhí)行
pod install
(記字尽:包括更新都建議使用pod install
拌滋,而不是pod update
)
這個(gè)命令就是安裝Pod倉(cāng)庫(kù)下的指定版本的第三方庫(kù)
三. CocoaPods公有和私有庫(kù)的區(qū)別
字面意思:公有可以理解為
開源
,CocoaPods其實(shí)是將倉(cāng)庫(kù)托管到github上面的猜谚,也就是說你的代碼所有用CocoaPods的人都可以看到败砂,但是我既希望CocoaPods管理我的庫(kù),又不希望開源魏铅,私有庫(kù)意義就來了昌犹。
實(shí)際區(qū)別:只有一點(diǎn)!@婪肌斜姥!就是Pod本身在github有個(gè)遠(yuǎn)程倉(cāng)庫(kù),里面都是指定第三方庫(kù)的.json/.podspec
文件沧竟,這個(gè)文件的作用就是描述你的第三方庫(kù)的信息铸敏,包括地址之類的。CocoaPods就是依靠此類文件來管理第三方庫(kù)屯仗。
四. git遠(yuǎn)程倉(cāng)庫(kù)與CocoaPods第三方庫(kù)和遠(yuǎn)程倉(cāng)庫(kù)
強(qiáng)調(diào)一下涉及到幾個(gè)庫(kù)的概念搞坝,接觸不多的人可能會(huì)混亂!
- 如果我和你用git進(jìn)行協(xié)作開發(fā)我們的“代碼”魁袜,即公共組件/私有組件桩撮,那么我們會(huì)用到git遠(yuǎn)程倉(cāng)庫(kù)敦第,這個(gè)地方就有一個(gè)遠(yuǎn)程倉(cāng)庫(kù)的地址的概念。
- 如果我和你想把這個(gè)“代碼”托管到CocoaPods店量,以方便使用芜果,
首先會(huì)有一個(gè)管理.podspec/.json
文件的git遠(yuǎn)程倉(cāng)庫(kù),而CocoaPods自己管理此類文件的遠(yuǎn)程倉(cāng)庫(kù)是托管到github上的融师,所以如果是私有庫(kù)右钾,那么就只要建一個(gè)類似的遠(yuǎn)程倉(cāng)庫(kù)就可以了。
五. 如何搭建私有庫(kù)旱爆?
在自己的git服務(wù)器上新建一個(gè)倉(cāng)庫(kù)舀射,用于存放對(duì)應(yīng)各種第三方庫(kù)的.podspec文件
終端執(zhí)行以下代碼,用來與pod關(guān)聯(lián)怀伦,前提是你第一步成功了
pod repo add UESpecs git@git.xxx.xxx:iOSPods
說明:
- 你自己的git服務(wù)器倉(cāng)庫(kù)名:iOSPods
- 將UESpecs添加到本地repo脆烟,添加成功后可以在
/.cocoapods/repos/
目錄下可以看到官方的specs:master和剛剛加入的specs:UESpecs- 如果有其他合作人員共同使用和維護(hù)這個(gè)私有Spec Repo的話,在他有對(duì)應(yīng)git倉(cāng)庫(kù)的權(quán)限的前提下房待,執(zhí)行相同的命令添加這個(gè)Spec Repo即可邢羔。
3.下面是一個(gè)簡(jiǎn)單的.podspec文件的模版
Pod::Spec.new do |s|
#庫(kù)名,和文件名一樣
s.name = "TABAnimated"
#tag方式:填tag名稱
#commit方式:填commit的id
s.version = "1.1.1"
#庫(kù)的簡(jiǎn)介
s.summary = "TABAnimated是一個(gè)ios平臺(tái)上的網(wǎng)絡(luò)過渡動(dòng)畫的封裝"
#庫(kù)的描述
s.description = <<-DESC
TABAnimated是一個(gè)ios平臺(tái)上利用Runtime運(yùn)行時(shí)機(jī)制的網(wǎng)絡(luò)過渡動(dòng)畫的封裝,你可以很輕松地集成它桑孩。
DESC
#庫(kù)的遠(yuǎn)程倉(cāng)庫(kù)地址
s.homepage = "https://github.com/tigerAndBull/LoadAnimatedDemo-ios"
#版權(quán)方式
s.license = { :type => "MIT", :file => "LICENSE" }
#庫(kù)的作者
s.author = { "tigerAndBull" => "1429299849@qq.com" }
#依賴于ios平臺(tái)上的8.0
s.platform = :ios, "8.0"
#庫(kù)的地址
s.source = { :git => "https://github.com/tigerAndBull/LoadAnimatedDemo-ios.git", :tag => "#{s.version}" }
#需要共享的文件
#從該項(xiàng)目的遠(yuǎn)程倉(cāng)庫(kù)根目錄開始拜鹤!
s.source_files = "AnimatedDemo/TABAnimated/*.{h,m}"
end
編寫完.podspec文件后,需要先執(zhí)行以下命令驗(yàn)證其合法性
pod lib lint TABAnimated.podspec
LICENSE
文件流椒,默認(rèn)要放在遠(yuǎn)程倉(cāng)庫(kù)根目錄
下面是LICENSE
文件模版敏簿,只需要把時(shí)間和名字改成你想要的就行了。
MIT License
Copyright (c) 2018 tigerAndBull
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
注:.podspec文件中的homepage和source不支持ssh協(xié)議地址宣虾,所以我們得放入http/https地址极谊。
- 然后將podspec加入私有Sepc repo中
pod repo push UESpecs TABAnimated.podspec
可以前往~/.cocoapods/repos下的UESpecs文件夾中查看, 同時(shí)你自己的git服務(wù)器中的遠(yuǎn)端也更新了。
但是啊安岂,這個(gè)時(shí)候其他人不知道更沒更新呀轻猖!
所以它需要執(zhí)行update命令,執(zhí)行完以后域那,他就有了你最新發(fā)布的版本
pod repo update UESpecs
- 如何查找和使用私有的第三方庫(kù)呢咙边?
必須在Podfile前面添加你的私有Spec repo的git地址source, pod install時(shí), 才能在私有repo中查找到私有庫(kù), 像這樣:
source 'git@git.xxx.xxx:iOSPods/UESpecs.git'
platform :ios, '8.0'
target "test" do
pod 'TABAnimated', '~>1.1.1'
end
發(fā)布新版本后,修改.podspec文件的s.version
次员,重新pod repo push就可以了,然后讓小伙伴們败许,update一下,就可以愉快地使用了淑蔚。
最后
- 因?yàn)樯婕暗降臇|西也比較多市殷,有些地方講的不到位的,還望海涵刹衫,有什么問題可以在下方留言醋寝。
- 有問題聯(lián)系私人wx:awh199833