使用cocoapods管理svn路径下库文件

cocoapods是什么?别问我

现在cocoapods的普及无需多说,本文也不详述它的心路历程,有兴趣的读者可以自行Google相关资料。好了闲话不多说,进入正题。

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

当我们首次使用cocoapods管理工程里面引用的开源库时,那感觉如沐春风、久旱甘霖都不算夸张。但奈何公司使用的是svn管理代码,时间久了,就有一些类似分享的小集成、数据统计的之类的小代码,它们都在svn上,每次新工程需要引用的时候。额,真烦,要拖这么多文件,真烦要引用的库都没说明白。。。

这时候就在想,要是引用公司的代码也能像Github上一样就爽了,今天和大家一起学习下吧。

其实在cocoapods官网是有说明的,是支持svn的,不光svn,还有其他地方托管的git,本地的代码库都是可以的,说白了source只是一个地址。

我是这么做的!


第一步,把svn的代码check out到本地,cd到该目录下,使用pod命令创建一个podspec文件。

$ pod spec create DemoLibrary

第二步,打开文件,看看里面的东西。

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"

这个设置是我已经改了的设置,和默认的设置有一些地方不一样,其中name是你的库名,version是版本号,description是要求有必须写点东西的,license的文件可以随便找一个修改下放到目录下,关键的还是source、source_files、exclude_files我待会儿说,framework或frameworks就是库需要引入的framework这个功能是极好的,dependency添加依赖的开源库,也是方便至极。

第三步,source内容

当我们用的svn时候

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

细心的你应该发现了在默认的时候是有一个tags的存在的,我这里因为我们那个svn没有加这些东西,我就删掉了。

这样做有一个缺点,我们的库用于是获取这个地址下最新的那套代码,这个问题,以后研究下吧。

地址我是瞎写的。

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

当你按照上面的形式操作了,发现你下载下来的代码只是一个空的文件夹,关键就在source_files,这个指定了要Classes文件下的文件,这样做有什么好处么?当然有,试想一下,你的路径是一个完整的工程,你只需要传实用的代码,这样做能够让你的工程不受影响,随意debug。

第四步,这样的路径就是正确的!

好了一切就绪,现在只需要把你的svn刚才的修改上传一下,使用pod install。

第五步,为什么会报错?

Authentication realm:  R&D Source Code Repositories

其实你svn的check out代码的时候需要输入账户和密码,这里可以在终端先随意check out一下代码,就会有缓存,重新再执行下就ok了。

1、checkout

svn checkout svn地址,简写: svn co svn地址

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

这是test工程的pod文件内容,和podspce文件的svn地址是一样的。


第六步,没有tag管理好不像样

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

补充关于tag设置

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

设置tag其实还是很简单的,我这里使用的是cornrstone管理svn代码。由于的我的文件目录以前是没有这个trunk和tags文件夹设置的,这里呢我需要在DemoLibrary目录下新建一个tags文件夹

然后呢在cornrstone的控制台,选到工程路径注意不是本地的,是svn的,然后选择顶部tag选项。不要忘了在podspce文件里修改你将设置成的版本!

弹出一个框框

使用工程的应用pod文件:

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

好了,完美!


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

                                                          20160829 补充

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

当tag版本未改变,修改了本地代码,需要清除pod缓存在本地的内容并且需要将pod file文件中引用该库注释先删除,再添加执行两次pod install,否则不会使用新代码。(~/Library/Caches/CocoaPods/Pods/External)

说明pod在本地有缓存,需要清除,并且只用该工程中的pod移除过之后,再次添加时才会去都去更新。


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

                                               20160913 补充SVN库之间的引用

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

在使用cocoapods的过程中不难发现,有一些库是依赖其他的库的,当我们使用的是cocoapods上的代码库只需要

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

当我们使用SVN路径上的库时,当然也需要这句话,但是你会发现,有错误。因为这时候并没有cocoapods缓存在本地的库,所以在工程文件podfile地方需要先pod该库

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

相信大家都发现了,这样比起官方的pod代码来说,多了这一个主动pod的动作。需要注意




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

回复网友的疑问事例

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

这是一个简单的事例,我这里UleShareSDK就是一个分享的集成库,当我需要QQ分享、微博分享、微信分享的时候,另外在SVN中存有它们不同版本的SDK,这个是引用工程的podfile里写的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容