Carthage是什么?它的优势在哪?
作为iOS工程师,一定或多或少用过一些第三方库,比如Alamofire,Kingfisher还是SnapKit。
之前我一直用的是CocoaPods,它是一个非常流行的依赖管理器,简化了第三方库集成到自己项目里的过程。甚至于谷歌也在用它来分发各种iOS的SDK。但是CocoaPods的缺点也很明显,就是侵入性太强,它会新创建一个Xcode项目,其中包含每个单独pod的目标以及包含工作区。然后你必须使用工作区,你的项目建立在了CocoaPods的可用之上,而且也会有一个额外的构建设置。
同样,Apple也发布了自己的包管理工具-Swift Package Manager,以便可以在swift3.0及更高的版本共享和分发软件包,也就是说只是面向swift。
除了以上说的两个工具,还有一个非常简单的包管理工具,那就是今天要说的Carthage了,这个工具其实也是发布了挺长时间了,在Github上的星星也有12.3K之多,它是有Github的开发者创建,用swift语言写的那么它有什么优势呢?
- Carthage不会修改你的项目;
- Carthage更新时,不需要访问中心仓库来获取配置;
- Carthage使用的是去中心化的方式管理库,让开发者更多的精力放在自己的代码上;
- Carthage可以很方便的添加自己的框架;
Carthage是安装
有两种安装方式:
Carthage的使用
- 打开终端,
cd 项目根目录,touch Cartfile; - 执行
open -a Xcode Cartfile,用Xcode打开Cartfile文件; - 编写依赖的第三方库,如:
github "Alamofire/Alamofire" == 4.5,其中== 4.5表示使用4.5版本,如果是~> 4.5,表示使用版本大于4.5且小于5.0的最新版本,如果是>=4.5,表示使用4.5或者更高版本;不指明版本号的话,会使用最新的版本; - 执行
carthage update --platform iOS,更新,并编译为二进制文件;该操作会在项目根目录下创建 Carthage/Checkouts 文件夹,Checkouts放置的是从GitHub下载的依赖源码,Build文件夹放置编译后的二进制文件;(注:单独更新某一个库:carthage update Alamofire --platform iOS) - 拖拽文件夹中的
.framework文件至项目设置界面的General选项卡的Linked Frameworks and Libraries中; - 在项目设置界面的
Build Phases选项卡,点击+按钮,选择New Run Script Phase来添加自定脚本:/usr/local/bin/carthage copy-frameworks; - 然后在下面的
Input Files点击+来添加依赖的路径:$(SRCROOT)/Carthage/Build/iOS/Alamofire.framework;
之后,就可以愉快的加班写代码了O(∩_∩)O哈哈~