前言
隨著業(yè)務(wù)越來越龐大岩馍,在單工程中碉咆,app中代碼逐漸越來越大,面對高耦合和難以復(fù)用的模塊蛀恩,我們就需要進行重構(gòu)了疫铜。而面對多條業(yè)務(wù)線,組件化是一種優(yōu)秀的解決方案双谆,將需要的組件以pod私有庫形式安裝到主工程中壳咕,組件間各自獨立,解耦顽馋,僅僅依賴一個中間件進行通訊谓厘。那么對于各個組件托管到遠程平臺最常用的是git,git的優(yōu)越性也無需贅言寸谜,但是很多公司對于代碼管理往往是本公司的svn服務(wù)器竟稳,本文的重點也是講解一下svn服務(wù)器托管的操作确虱,這在網(wǎng)上資源是很少有正確的唁情,這篇文章帶你真正學(xué)會cocoapods 基于svn托管方式腮鞍。
鄭重申明
本文是一篇高級教程截汪,不提供入門基礎(chǔ)教程儿咱。
首先我們以git為基礎(chǔ)講解代碼托管原理嗤堰,請看下圖:
1.首先我們需要一個遠程托管倉庫嫡锌,git或者svn产舞。
2.必須明確一個概念我們需要兩個遠程倉庫巾陕,一個是遠程的索引庫和一個遠程的源碼庫讨跟,cocoapods 基本原理也是這樣的,平時采用的方式和我們組件化唯一區(qū)別就是將公有變?yōu)樗接小?br>
我們通過將遠程索引庫添加到本地惜论,然后在本地生成索引文件许赃,當(dāng) pod 'LibBase',pod install,首先會在本地索引文件中查找到相應(yīng)庫文件地址進行本地clone,這樣我們就可以使用了。
3.當(dāng)我們將代碼傳到遠程源碼倉庫以后馆类,需要在進行第5步操作混聊,向私有索引庫提交,這里需要解釋一下這個過程,當(dāng)我們通過命令行操作向本地私有索引庫推入索引文件句喜,同時也會添加到遠程索引庫预愤,這樣當(dāng)小伙伴要使用你的庫,只需要更新他本地的就可以了咳胃。
那么以上就是git 方式的主要操作植康,下面我重點演示svn方式销睁。
1.選用第三方svn服務(wù)器作為測試:
http://code.svnspot.com
這里允許創(chuàng)建兩個庫,剛好滿足我們私有索引庫和代碼庫的創(chuàng)建冗栗,
2.接下來我們需要將遠程索引庫葛虐,添加到本地挡闰,這里為了滿足svn 操作我們需要安裝一個 cocoapods-repo-svn插件,參考 https://github.com/dustywusty/cocoapods-repo-svn
pod repo-svn add Name Url
這里本地索引庫名字盡量保持一致奢驯,url 就是遠程索引庫的地址
然后我們會在.cocoapod 看到這個文件夾
然后終端可以查看一下相應(yīng)的索引庫
pod repo
這里就有我們的索引庫 SpecsRepo
邮偎。
3.接下來我們需要將遠程源碼倉庫克隆到本地豁跑,采用Cornerstone 工具
兩種方式艇拍,直接添加遠程地址或者通過終端命令克隆下來然后導(dǎo)入层释。
具體操作不在贅述。
4.創(chuàng)建本地私有模板庫
pod lib create Name
我們需要把 .git .gitignore .travis.yml 這三個文件刪掉,然后將這個庫拖入到 svn 本地倉庫的 trunk下面宵统。當(dāng)然這個里面包括你的組件庫文件。
5.編寫podsepc 文件
這里我們需要將原地址改為svn 地址,可以進行本地驗證一下
pod lib lint
完成以后使用Cornerstone工具提交代碼至遠程涤伐。
6.遠程打標(biāo)簽tag
svn 終端命令行好像沒有直接打tag 的命令凝果,我們可以直接通過Cornerstone打tag,需要注意的是標(biāo)簽的tag和podsepc 文件中的版本一致器净。
7.最后一步提交spec至私有索引庫
pod repo-svn push Name xx.podsepc
需要注意的是cd 到 本地trunk 文件夾目錄下沿量,才能包含xx.podsepc 文件朴则。
至此我們大功告成妖碉!我們可以通過終端 搜索一下我們的庫
pod search BCBaseLib
這里我已經(jīng)提交了兩個版本。
8.使用
Podfile文件編寫
platform :ios, '8.0'
target 'test' do
plugin 'cocoapods-repo-svn', :sources => [
'http://10.211.55.3/svn/SpecRepo' # 遠程索引庫地址
]
use_frameworks!
pod 'BCBaseLib' # 本地 svn 私有庫
pod 'AFNetworking' # 可直接 pod 公開三方庫
end
可能會出現(xiàn)以下問題
- pod install 報錯找不到組件
可以更新一下本地索引庫 pod repo-svn update --no-repo-update
2>路徑不對
我在測試中發(fā)現(xiàn)該地址不對,折騰了半天才發(fā)現(xiàn) 在podspec 文件中 s.source 路徑不對豪诲,通常產(chǎn)生這種問題大家可以先通過瀏覽器訪問該地址葵蒂,如果不通就說明該地址不對永高。