iOS - 從認(rèn)識(shí)pod到搭建pod私有庫(kù)并多人維護(hù)

前言:

公司最近打算搭建一個(gè)私有的pod庫(kù),我以前也是一個(gè)只會(huì)很小白地用一下pod再来,拉幾個(gè)有名的第三方庫(kù)床绪。花了不到一個(gè)工作日其弊,pod私有庫(kù)算是搭建成功,包括如何進(jìn)行多人維護(hù)也理清楚了膀斋。
所以呢梭伐,把整個(gè)理解的過程記錄下來,供公司內(nèi)部使用仰担,順便也和大家分享一下糊识。

提醒:

本文不涉及如何搭建私人git服務(wù)器

本文目錄

  1. CocoaPods安裝
  2. 簡(jiǎn)單使用CocoaPods
  3. CocoaPods公有和私有庫(kù)的區(qū)別
  4. git遠(yuǎn)程倉(cāng)庫(kù)與CocoaPods遠(yuǎn)程倉(cāng)庫(kù)
  5. 如何搭建并維護(hù)私有庫(kù)

一. CocoaPods安裝

這個(gè)配置環(huán)境的過程,就不多贅述了

二. 簡(jiǎn)單使用CocoaPods

  1. 在項(xiàng)目根目錄下 pod init摔蓝,初始化操作
  2. 會(huì)在根目錄下生成一個(gè)Profile文件赂苗,用過的應(yīng)該都有所了解
    主要強(qiáng)調(diào):根據(jù)這個(gè)文件就能夠找到Pod倉(cāng)庫(kù)下的指定版本的第三方庫(kù)的.podspec文件(后面會(huì)講到)
  3. 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ì)混亂!

  1. 如果我和你用git進(jìn)行協(xié)作開發(fā)我們的“代碼”魁袜,即公共組件/私有組件桩撮,那么我們會(huì)用到git遠(yuǎn)程倉(cāng)庫(kù)敦第,這個(gè)地方就有一個(gè)遠(yuǎn)程倉(cāng)庫(kù)的地址的概念。
  2. 如果我和你想把這個(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ù)旱爆?

  1. 在自己的git服務(wù)器上新建一個(gè)倉(cāng)庫(kù)舀射,用于存放對(duì)應(yīng)各種第三方庫(kù)的.podspec文件

  2. 終端執(zhí)行以下代碼,用來與pod關(guān)聯(lián)怀伦,前提是你第一步成功了

pod repo add UESpecs git@git.xxx.xxx:iOSPods

說明:

  1. 你自己的git服務(wù)器倉(cāng)庫(kù)名:iOSPods
  2. 將UESpecs添加到本地repo脆烟,添加成功后可以在/.cocoapods/repos/目錄下可以看到官方的specs:master和剛剛加入的specs:UESpecs
  3. 如果有其他合作人員共同使用和維護(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地址极谊。

  1. 然后將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 
  1. 如何查找和使用私有的第三方庫(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一下,就可以愉快地使用了淑蔚。

最后

  1. 因?yàn)樯婕暗降臇|西也比較多市殷,有些地方講的不到位的,還望海涵刹衫,有什么問題可以在下方留言醋寝。
  2. 有問題聯(lián)系私人wx:awh199833
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末搞挣,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子音羞,更是在濱河造成了極大的恐慌囱桨,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嗅绰,死亡現(xiàn)場(chǎng)離奇詭異舍肠,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)窘面,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門翠语,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人财边,你說我怎么就攤上這事啡专。” “怎么了制圈?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)畔况。 經(jīng)常有香客問我鲸鹦,道長(zhǎng),這世上最難降的妖魔是什么跷跪? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任馋嗜,我火速辦了婚禮,結(jié)果婚禮上吵瞻,老公的妹妹穿的比我還像新娘葛菇。我一直安慰自己,他們只是感情好橡羞,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布眯停。 她就那樣靜靜地躺著,像睡著了一般卿泽。 火紅的嫁衣襯著肌膚如雪莺债。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天签夭,我揣著相機(jī)與錄音齐邦,去河邊找鬼。 笑死第租,一個(gè)胖子當(dāng)著我的面吹牛措拇,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播慎宾,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼丐吓,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼浅悉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起汰蜘,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤仇冯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后族操,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體苛坚,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年色难,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了泼舱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡枷莉,死狀恐怖娇昙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情笤妙,我是刑警寧澤冒掌,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站蹲盘,受9級(jí)特大地震影響股毫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜召衔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一铃诬、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧苍凛,春花似錦趣席、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至悠栓,卻和暖如春钉寝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背闸迷。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工嵌纲, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人腥沽。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓逮走,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親今阳。 傳聞我的和親對(duì)象是個(gè)殘疾皇子师溅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容