使用Carthage管理iOS第三方库

最近在研究Swift ,一不小心发现一个好的的管理iOS第三方库 Carthage ,就跟第一次使用 CocoaPods时一样兴奋不已,在研究了大半天后终于能用了,使用起来还是很方便的,比起 CocoaPods 有不足也有优点,两个配合起来用也是很爽的^ - ^

初识 Carthage

最近在用Swift3.0 做项目,想导入一些支持 Swift3.0 的第三方库来使用,就想到 Alamofire ,看 README时发现了一个新的名词 Carthage ,What?,这是个什么东西,居然也可以用它来管理第三方库,之前都没见到过,赶紧百度了一下补充了下知识:

Carthage:迦太基(地中海地区古城),好吧这是百度百科的解释,至于为什么用这个单词,我也不太清楚,可能比较屌吧,看下图你就知道它是用来干什么的了:

Carthage的目标是用最简单的方式来管理Cocoa第三方框架

是的,你没看错,它可以用来管理第三方库Alamofire ,然后查了一下,还有很多第三方库都可以用它来管理,跟 CocoaPods一样可以用来管理第三方库,看了一下它的崛起时间大概是iOS8之后 Swift 出来的时候,与现在流行的 CocoaPods不同,它是一个去中心化的解决方案。 CocoaPods 的方法更易于使用,但 Carthage 更灵活并且是非侵入性的。

大家都知道 Swift 是支持动态库的,所以 Carthage 应势而生,它没有总项目的列表,这能够减少维护工作并且避免任何中心化带来的问题)。不过,这样也有一些缺点,就是想修改第三方库源码的话很费劲,还需要重新编译打包。

安装和使用Carthage

首先到 github 上Download或者Clone Git 或者使用 HomeBrew (没有安装的可以自行百度去装一个)安装~

brew update #先更新

brew install carthage #安装Carthage

当你安装好Carthage后,在终端执行来判断是否安装成功:

carthage version

即可看到当前的 Carthage 版本, 当我写这篇文章的时候, Carthage 的版本为0.18(还是很年轻的嘛) 。

现在,你已经安装好了 Carthage ,接下来就是在你的项目中使用carthage了:

vim Cartfile #创建一个叫Cartfile的文件

输入你想要编译成Framework的 Swift 第三方库,比如说 SnapKit 和 Alamofire ,如下所示:

github "Alamofire/Alamofire" ~> 4.0 #支持Swift3.0

github "SnapKit/SnapKit" ~> 3.0 #支持Swift3.0

github代表源,而后面的就是用户名和版本库的名字,而”~>” 后面是版本号哈!

保存退出,执行:

carthage update --platform iOS #因为是打包iOS的所以后面加iOS,有的库支持mac、watch的话会打几个包

之后会发现在跟目录下多出了 Carthage 文件夹和 Cartfile.resolved 文件。进入 Carthage/Checkouts 下可以看到刚刚得到的 Alamofire 和 SnapKit ,如下图所示:

现在打开你的项目,点击 project ,选择 target , 再选择上方的 General ,将需要的 framework 文件拖到 Linked frameworks and Binaries 内:

然后这是很重要的一步,点击 Build Phrase tab 选项,添加相应的 run script :

/usr/local/bin/carthage copy-frameworks

$(SRCROOT)/Carthage/Build/iOS/你的framework

然后就可以去项目里面 import 你得第三方库了~~可以愉快的使用了,不过有一点要吐槽一下 build 的速度真是有点慢- . -

CocoaPods的优势与劣势

优势

使用方便,除编写 Podfile 以外其他几乎都是自动完成;

软件包数量多,主流支持;

支持 iOS 8 Framework,当然也支持旧的静态编译;

开发者使用比较简单,但是如果创建兼容 CocoaPods 的库,就会相对繁琐一些(尽管有了命令行)~

劣势

每次clean后都得重新编译,编译比较耗时,Archive也会变慢;

每次更新环境都需要连接到中心仓库,比较耗时~

Carthage的优势与劣势

优势

build一次后就能在项目里面使用,增加编译速度;

可以与 CocoaPods 无缝集成;

它是去中心化的,没有中心服务器,这意味着每次配置和更新环境,只会去更新具体的库,而不会有一个向中心服务器获取最新库的索引这么个过程,如此一来,又省了很多时间;

不会影响你的项目配置的,相对 CocoaPods 而言更加独立,Carthage 使用的是一种非侵入性的哲学;

劣势

库依然不如 CocoaPods 丰富:尽管很多库不需要声明并改造就直接可以被 Carthage 用,但依然有大量 CocoaPods 能用的库不支持,我相信时间能解决这个问题;

只支持 Framework,所以是 iOS 8 Only 了,随着时间推移,这个也不会是问题;

无法在 Xcode 里定位到源码:如果你在写代码过程中,想跳转到一个第三方库去看具体的实现,这是无法办到的,Carthage 的配置只能让你看到一个库的头文件~

总结

我觉得不管怎样,好不好用,做为iOS程序员我们都应该去尝试的了解一下它,通过它去学到更多的东西,至于什么第三方库用

CocoaPods ,什么去用 Carthage ,我觉得一些比较稳定大的库可以用 Carthage

,而一些变动比较大,自己还有可能去修改的库我们肯定首选 CocoaPods 。

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

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 11,614评论 4 59
  • 做酸菜鱼这道菜很适合打电话。 (ˇˍˇ),Good。简书的文风行不行标表情。像我这样不配合的,浪漫时笑点很低,搞笑...
    moondaysusu阅读 628评论 4 7
  • 嫂子看到我写的关于从怀孕到生产的全过程,她说自己有意向做这个业务,首先她今年有希望工程,恰好有时间和有经历去写这些...
    博贝阅读 720评论 0 0
  • 三天三夜的内训终于结束,三天三夜没刮胡子没洗澡…于是很想念外面的世界和色彩。 三天三夜,沉浸在另一个世界…所有图片...
    礼拜五兰阅读 345评论 11 4
  • 用单反机可以拍出漂亮的照片,用普通手机也能拍出让人悦目的照片。 以下照片绝大部分为手机拍摄。 后期制作也相当重要。...
    北美K哥阅读 384评论 0 2