元件化開發之利用SVN搭建私有SpecRepo
隨著公司業務發展,app數量增加,貼上複製重複造輪子的開發方式已經不能滿足多個app快速迭代的需求了,於是就元件化開發就應運而生了,關於什麼是元件化開發以及元件化開發的好處,這裡不再贅述,需要了解的同學移步這裡傳送門。本文只講述元件化開發關鍵技術—使用cocoapods管理元件化開發。
一、由於公司內部實現的一些私有元件,不對外公開,所以考慮建立私有podspec,下圖就是使用私有庫帶給我們的好處:
至此,我們明白了查詢到第三方庫背後的原理。但是,具體如何進行搜尋的呢?先解釋一個概念,什麼是Spec Repo?它是所有的Pods的一個索引,也就是一個容器(集合),所有公開的Pods都在這個裡面。實際上就是一個Git倉庫remote端,當你使用了Cocoapods,這個倉庫會被clone到本地的~/.cocoapods/repos目錄下,進入到這個檔案下可以看到master資料夾,就是官方的Spec Repo了。當你pod search的時候就在master這個檔案下面查詢的。
二、如何製作出屬於自己的私有庫?由於我們公司用的是SVN ,網上的資料介紹的絕大多數是基於git的(需要基於git建立私有庫,請移步這裡傳送門,經過查詢資料發現:
# Specify the location from where the source should be retrieved.
# Supports git, hg, bzr, svn and HTTP.
結果是明確的,支援SVN製作私有庫,那麼接下來就是不斷的踩坑,終於成功了,記錄下來備忘,如果能夠幫到別人更好。
重點開始了
步驟一 首先在SVN建立私有庫目錄,check out,編寫私有庫程式碼,上傳至SVN。
例如這裡我建立了名為ForPrivateLibraries的目錄,用來存放所有私有庫,然後在ForPrivateLibraries目錄下,建立了名為WDTest的私有庫,檔案目錄如下
步驟二建立podspec檔案並修改,在終端中cd到WDTest的目錄下,使用pod命令建立一個podspec檔案。
具體終端操作如下:
WDiMac:~ apple$ cd /Users/apple/Desktop/MySVN/ForPrivateLibraries/WDTest
WDiMac:WDTest apple$ pod spec create WDTest
Specification created at WDTest .podspec
WDiMac:WDTest apple$
podspec檔案建立之後需要對其進行修改,
Pod::Spec.new do |s|
s.name = "WDTest"
s.version = "0.0.1"
s.summary = "測試使用SVN建立私有庫"
s.description = <<-DESC
測試使用SVN建立私有庫,看是否能成功
DESC
s.homepage = "http://EXAMPLE/WDTest"
s.license = "MIT"
s.author = { "" => "" }
s.platform = :ios, "8.0"
s.source = { :svn => "" }
s.source_files = "Classes", "Classes/**/*.{h,m}"
s.exclude_files = "Classes/Exclude"
s.requires_arc = true
end
注意點一、上面是我修改之後的檔案,主要是對於 s.source 進行修改,這裡的路徑就是podspec檔案所在的路徑,可以直接在Cornerstone上 copy url(見下圖)。
注意點二、podspec檔案的source預設是有一個tags存在的,現在先刪掉,後面會敘述。s.source_files也非常重要,如果搞錯可能會導致pod install之後沒有原始檔。
注意點三、 s.author = { “” => “” } 如果你之前註冊過trunk,這裡面會幫你自動填寫,如果沒有我會在另外一篇文章《釋出自己的pods到CocoaPods trunk》中介紹怎麼註冊trunk。
podspec檔案修改完畢之後上傳至SVN。
步驟三,測試使用。我建立了一個WDCocoaPodsTest的工程用於測試,編寫對應的Podfile檔案
platform :ios, '8.0'
use_frameworks!
target 'WDCocoaPodsTest' do
pod 'AFNetworking'
pod'WDTest', :svn =>""
end
這裡面svn =>”“對應的路徑就是步驟二中的 s.source
編寫完成之後進行pod install 檢視 ,可以看到安裝成功,使用也沒有問題。
步驟四 新增tag功能
設定tag其實還是很簡單的,首先需要在WDTest目錄下新建一個tags資料夾,我採用的是本地建立好,然後上傳到SVN。然後選中WDTest資料夾右擊 Tag ,填寫tag和選擇tags的位置,之後建立tag 0.0.1。注意是不是在本地選中WDTest檔案,而是在SVN遠端倉庫目錄中。
修改podfile檔案描述如下:
platform :ios, '8.0'
use_frameworks!
target 'WDCocoaPodsTest' do
pod 'AFNetworking'
pod'WDTest', :svn =>"",:tag =>”0.0.1”
end
這裡面svn =>”“同樣是步驟二中的 s.source
修改之後重新安裝同樣可以使用
步驟五 更新新版本–tag管理,
修改原始碼,同時修改WDTest.podspec檔案中 s.version = “0.0.1”為 s.version = “1.0.1”
提交程式碼至SVN,然後在SVN中新增新tag 1.0.1
修改podfile檔案描述如下:
platform :ios, ‘8.0’
use_frameworks!
target ‘WDCocoaPodsTest’ do
pod ‘AFNetworking’
pod’WDTest’, :svn =>”“,:tag =>”1.0.1”
end
這裡面svn =>”“同樣是步驟二中的 s.source
重新pod install 測試
最終的SVN目錄截圖如下
Pods裡面只有WDTest,證明我們確實安裝的是1.0.1
至此,整個過程已經完成了,有需要的小夥伴可以試試