組件化遠(yuǎn)程私有庫解決方案(cocoapods基于git 、svn)----高級版

前言

隨著業(yè)務(wù)越來越龐大,在單工程中,app中代碼逐漸越來越大,面對高耦合和難以復(fù)用的模塊,我們就需要進(jìn)行重構(gòu)了。而面對多條業(yè)務(wù)線,組件化是一種優(yōu)秀的解決方案,將需要的組件以pod私有庫形式安裝到主工程中,組件間各自獨(dú)立,解耦,僅僅依賴一個(gè)中間件進(jìn)行通訊。那么對于各個(gè)組件托管到遠(yuǎn)程平臺最常用的是git,git的優(yōu)越性也無需贅言,但是很多公司對于代碼管理往往是本公司的svn服務(wù)器,本文的重點(diǎn)也是講解一下svn服務(wù)器托管的操作,這在網(wǎng)上資源是很少有正確的,這篇文章帶你真正學(xué)會cocoapods 基于svn托管方式。

鄭重申明

本文是一篇高級教程,不提供入門基礎(chǔ)教程。

首先我們以git為基礎(chǔ)講解代碼托管原理,請看下圖:

git 操作方式

1.首先我們需要一個(gè)遠(yuǎn)程托管倉庫,git或者svn。
2.必須明確一個(gè)概念我們需要兩個(gè)遠(yuǎn)程倉庫,一個(gè)是遠(yuǎn)程的索引庫和一個(gè)遠(yuǎn)程的源碼庫,cocoapods 基本原理也是這樣的,平時(shí)采用的方式和我們組件化唯一區(qū)別就是將公有變?yōu)樗接小?br> 我們通過將遠(yuǎn)程索引庫添加到本地,然后在本地生成索引文件,當(dāng) pod 'LibBase',pod install,首先會在本地索引文件中查找到相應(yīng)庫文件地址進(jìn)行本地clone,這樣我們就可以使用了。
3.當(dāng)我們將代碼傳到遠(yuǎn)程源碼倉庫以后,需要在進(jìn)行第5步操作,向私有索引庫提交,這里需要解釋一下這個(gè)過程,當(dāng)我們通過命令行操作向本地私有索引庫推入索引文件,同時(shí)也會添加到遠(yuǎn)程索引庫,這樣當(dāng)小伙伴要使用你的庫,只需要更新他本地的就可以了。

那么以上就是git 方式的主要操作,下面我重點(diǎn)演示svn方式。

1.選用第三方svn服務(wù)器作為測試:

http://code.svnspot.com
這里允許創(chuàng)建兩個(gè)庫,剛好滿足我們私有索引庫和代碼庫的創(chuàng)建,

svn 遠(yuǎn)程測試庫

2.接下來我們需要將遠(yuǎn)程索引庫,添加到本地,這里為了滿足svn 操作我們需要安裝一個(gè) cocoapods-repo-svn插件,參考 https://github.com/dustywusty/cocoapods-repo-svn

pod repo-svn add Name Url

這里本地索引庫名字盡量保持一致,url 就是遠(yuǎn)程索引庫的地址

然后我們會在.cocoapod 看到這個(gè)文件夾

這里我遠(yuǎn)程跟本地名字不一樣

然后終端可以查看一下相應(yīng)的索引庫

pod repo

索引庫本地以及遠(yuǎn)程地址

這里就有我們的索引庫 SpecsRepo。

3.接下來我們需要將遠(yuǎn)程源碼倉庫克隆到本地,采用Cornerstone 工具

兩種方式,直接添加遠(yuǎn)程地址或者通過終端命令克隆下來然后導(dǎo)入。
具體操作不在贅述。

4.創(chuàng)建本地私有模板庫

pod lib create Name

私有模板庫

我們需要把 .git .gitignore .travis.yml 這三個(gè)文件刪掉,然后將這個(gè)庫拖入到 svn 本地倉庫的 trunk下面。當(dāng)然這個(gè)里面包括你的組件庫文件。

5.編寫podsepc 文件

podsepc 文件編寫

這里我們需要將原地址改為svn 地址,可以進(jìn)行本地驗(yàn)證一下

pod lib lint

完成以后使用Cornerstone工具提交代碼至遠(yuǎn)程。

6.遠(yuǎn)程打標(biāo)簽tag

svn 終端命令行好像沒有直接打tag 的命令,我們可以直接通過Cornerstone打tag,需要注意的是標(biāo)簽的tag和podsepc 文件中的版本一致。


遠(yuǎn)程打標(biāo)簽可以在tag中查看版本

7.最后一步提交spec至私有索引庫

pod repo-svn push Name xx.podsepc

需要注意的是cd 到 本地trunk 文件夾目錄下,才能包含xx.podsepc 文件。

至此我們大功告成!我們可以通過終端 搜索一下我們的庫

pod search BCBaseLib

這里我已經(jīng)提交了兩個(gè)版本。

8.使用

Podfile文件編寫

platform :ios, '8.0'
target 'test' do
plugin 'cocoapods-repo-svn', :sources => [
        'http://10.211.55.3/svn/SpecRepo' # 遠(yuǎn)程索引庫地址
    ] 
use_frameworks!
pod 'BCBaseLib'  # 本地 svn 私有庫
pod 'AFNetworking'    # 可直接 pod 公開三方庫
end

可能會出現(xiàn)以下問題

  1. pod install 報(bào)錯(cuò)找不到組件

可以更新一下本地索引庫 pod repo-svn update --no-repo-update

2>路徑不對


我在測試中發(fā)現(xiàn)該地址不對,折騰了半天才發(fā)現(xiàn) 在podspec 文件中 s.source 路徑不對,通常產(chǎn)生這種問題大家可以先通過瀏覽器訪問該地址,如果不通就說明該地址不對。

以上呢就是基于svn的所有主要的過程,一些細(xì)節(jié)問題大家可以自行嘗試。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 最近在學(xué)習(xí)vue.js的時(shí)候發(fā)現(xiàn),vue的組件化的思想對于編寫代碼是一個(gè)非常有用的事情。 首先為什么需要組件化? ...
    拂曉的云閱讀 7,360評論 6 23
  • 本地私有庫不能滿足團(tuán)隊(duì)開發(fā)的需要,存在一下問題: 需要主動指明路徑,然后庫的本地位置就不能動了,否則Podfile...
    Lovell_閱讀 447評論 0 0
  • 最近想為公司搭建cocoapods私有庫框架,老早之前做過,踩過不少坑,想不到又一次掉坑里。果真是好記性不如爛筆頭...
    生光閱讀 1,668評論 0 4
  • 首先,也許有人覺得,開發(fā)使用遠(yuǎn)程私有庫很麻煩,還不如直接寫好,拖到項(xiàng)目中直接使用來的方便??晌蚁胝f的是,在一個(gè)小的...
    悠閑自在的蝸牛閱讀 2,285評論 0 10
  • 作者:如秋 柳梢青 祝姨婆百歲壽 和風(fēng)細(xì)轉(zhuǎn), 合家同歡, 對飲蓬萊。 鶴語寄春, 蟠桃捧宴, 玉燭調(diào)元。 福祉如山...
    秋之韻的空間閱讀 414評論 0 3

友情鏈接更多精彩內(nèi)容