使用cocoapods管理svn路徑下庫(kù)文件

cocoapods是什么?別問(wèn)我

現(xiàn)在cocoapods的普及無(wú)需多說(shuō),本文也不詳述它的心路歷程,有興趣的讀者可以自行Google相關(guān)資料。好了閑話不多說(shuō),進(jìn)入正題。

都在用的東西能不能更好用?

當(dāng)我們首次使用cocoapods管理工程里面引用的開(kāi)源庫(kù)時(shí),那感覺(jué)如沐春風(fēng)、久旱甘霖都不算夸張。但奈何公司使用的是svn管理代碼,時(shí)間久了,就有一些類(lèi)似分享的小集成、數(shù)據(jù)統(tǒng)計(jì)的之類(lèi)的小代碼,它們都在svn上,每次新工程需要引用的時(shí)候。額,真煩,要拖這么多文件,真煩要引用的庫(kù)都沒(méi)說(shuō)明白。。。

這時(shí)候就在想,要是引用公司的代碼也能像Github上一樣就爽了,今天和大家一起學(xué)習(xí)下吧。

其實(shí)在cocoapods官網(wǎng)是有說(shuō)明的,是支持svn的,不光svn,還有其他地方托管的git,本地的代碼庫(kù)都是可以的,說(shuō)白了source只是一個(gè)地址。

我是這么做的!


第一步,把svn的代碼check out到本地,cd到該目錄下,使用pod命令創(chuàng)建一個(gè)podspec文件。

$ pod spec create DemoLibrary

第二步,打開(kāi)文件,看看里面的東西。

s.name? ? ? ? = "UleNetWork"

s.version? ? ? = "1.0"

s.summary? ? ? = "apply for new App UleNetWork."

s.description? = <<-DESC

apply for new App UleNetWork.

DESC

s.license? ? ? = {:type => "MIT", :file => "LICENSE"}

s.platform? ? = :ios, "7.0"

s.source? ? ? = { :svn => "" }

s.source_files? = "Classes", "Classes/**/*.{h,m}"

s.exclude_files = "Classes/Exclude"

s.framework? = "Foundation"

# s.frameworks = "SomeFramework", "AnotherFramework"

s.requires_arc = true

# s.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SDKROOT)/usr/include/libxml2" }

s.dependency "AFNetworking", "~> 3.1"

s.dependency "JSONModel", "~> 1.2.0"

這個(gè)設(shè)置是我已經(jīng)改了的設(shè)置,和默認(rèn)的設(shè)置有一些地方不一樣,其中name是你的庫(kù)名,version是版本號(hào),description是要求有必須寫(xiě)點(diǎn)東西的,license的文件可以隨便找一個(gè)修改下放到目錄下,關(guān)鍵的還是source、source_files、exclude_files我待會(huì)兒說(shuō),framework或frameworks就是庫(kù)需要引入的framework這個(gè)功能是極好的,dependency添加依賴的開(kāi)源庫(kù),也是方便至極。

第三步,source內(nèi)容

當(dāng)我們用的svn時(shí)候

s.source? ? ? = { :svn => "http://svn.baidu.com/baidu/mobileclient/iPhone/BaiduCodeLibrary/DemoLibrary/" }

細(xì)心的你應(yīng)該發(fā)現(xiàn)了在默認(rèn)的時(shí)候是有一個(gè)tags的存在的,我這里因?yàn)槲覀兡莻€(gè)svn沒(méi)有加這些東西,我就刪掉了。

這樣做有一個(gè)缺點(diǎn),我們的庫(kù)用于是獲取這個(gè)地址下最新的那套代碼,這個(gè)問(wèn)題,以后研究下吧。

地址我是瞎寫(xiě)的。

s.source_files? = "Classes", "Classes/**/*.{h,m}"

當(dāng)你按照上面的形式操作了,發(fā)現(xiàn)你下載下來(lái)的代碼只是一個(gè)空的文件夾,關(guān)鍵就在source_files,這個(gè)指定了要Classes文件下的文件,這樣做有什么好處么?當(dāng)然有,試想一下,你的路徑是一個(gè)完整的工程,你只需要傳實(shí)用的代碼,這樣做能夠讓你的工程不受影響,隨意debug。

第四步,這樣的路徑就是正確的!

好了一切就緒,現(xiàn)在只需要把你的svn剛才的修改上傳一下,使用pod install。

第五步,為什么會(huì)報(bào)錯(cuò)?

Authentication realm: ?R&D Source Code Repositories

其實(shí)你svn的check out代碼的時(shí)候需要輸入賬戶和密碼,這里可以在終端先隨意check out一下代碼,就會(huì)有緩存,重新再執(zhí)行下就ok了。

1、checkout

svn checkout svn地址,簡(jiǎn)寫(xiě): svn co svn地址

成功了,好爽啊,一起happy吧。

這是test工程的pod文件內(nèi)容,和podspce文件的svn地址是一樣的。


第六步,沒(méi)有tag管理好不像樣

===============================================

補(bǔ)充關(guān)于tag設(shè)置

===============================================

設(shè)置tag其實(shí)還是很簡(jiǎn)單的,我這里使用的是cornrstone管理svn代碼。由于的我的文件目錄以前是沒(méi)有這個(gè)trunk和tags文件夾設(shè)置的,這里呢我需要在DemoLibrary目錄下新建一個(gè)tags文件夾

然后呢在cornrstone的控制臺(tái),選到工程路徑注意不是本地的,是svn的,然后選擇頂部tag選項(xiàng)。不要忘了在podspce文件里修改你將設(shè)置成的版本!

彈出一個(gè)框框

使用工程的應(yīng)用pod文件:

pod'UleNetWork', :svn =>"http://svn.baidu.com/baidu/mobileclient/iPhone/BaiduCodeLibrary/DemoLibrary/",:tag =>"1.0.1"

好了,完美!


----------------------------------------------------------------------------

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 20160829 補(bǔ)充

----------------------------------------------------------------------------

當(dāng)tag版本未改變,修改了本地代碼,需要清除pod緩存在本地的內(nèi)容并且需要將pod file文件中引用該庫(kù)注釋先刪除,再添加執(zhí)行兩次pod install,否則不會(huì)使用新代碼。(~/Library/Caches/CocoaPods/Pods/External)

說(shuō)明pod在本地有緩存,需要清除,并且只用該工程中的pod移除過(guò)之后,再次添加時(shí)才會(huì)去都去更新。


----------------------------------------------------------------------------

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?20160913 補(bǔ)充SVN庫(kù)之間的引用

----------------------------------------------------------------------------

在使用cocoapods的過(guò)程中不難發(fā)現(xiàn),有一些庫(kù)是依賴其他的庫(kù)的,當(dāng)我們使用的是cocoapods上的代碼庫(kù)只需要

s.dependency 'UlePayBaseSDK', "~> 1.0.0"

當(dāng)我們使用SVN路徑上的庫(kù)時(shí),當(dāng)然也需要這句話,但是你會(huì)發(fā)現(xiàn),有錯(cuò)誤。因?yàn)檫@時(shí)候并沒(méi)有cocoapods緩存在本地的庫(kù),所以在工程文件podfile地方需要先pod該庫(kù)

pod'UleSecurityKit', :svn =>"...UleSecurityKit/",:tag =>"1.0.0"

相信大家都發(fā)現(xiàn)了,這樣比起官方的pod代碼來(lái)說(shuō),多了這一個(gè)主動(dòng)pod的動(dòng)作。需要注意




===============================================

回復(fù)網(wǎng)友的疑問(wèn)事例

===============================================

這是一個(gè)簡(jiǎn)單的事例,我這里UleShareSDK就是一個(gè)分享的集成庫(kù),當(dāng)我需要QQ分享、微博分享、微信分享的時(shí)候,另外在SVN中存有它們不同版本的SDK,這個(gè)是引用工程的podfile里寫(xiě)的。

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

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

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