1. 程式人生 > >元件化開發之利用SVN搭建私有SpecRepo

元件化開發之利用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.1end

這裡面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

這裡寫圖片描述

至此,整個過程已經完成了,有需要的小夥伴可以試試