iOS 包管理
CocoaPods(Objective-C 时期,支持Objective-C和swift),CocoaPods下载第三方库源代码后会将其编译成静态库.a 文件 或动态库框架.framework 文件 的形式,并将它们添加到项目中,建立依赖关系,这种方式会修改Xcode项目属性配置依赖关系。CocoaPods 搭建了一个中心库,第三方库被 收入到该中心库中,没有收录的第三方库是不能使用 CocoaPods 管理的。
Carthage 没有这样的中心库,支持两种类型的源,一个是github,另一个是git。,第三方库基本上都是从 github 或私有 git 库中下载的,下载后会将其编译成动态框架.framework 文件,再由开发人员自己配置依赖关系,这种方式不会修改 Xcode 项目属性。
安装carthage
brew install carthage
在工程目录创建cartfile
touch cartfile
并添加依赖
github "Alamofire/Alamofire" "5.0.0-rc.3"
github "onevcat/Kingfisher"
github "nixzhu/MonkeyKing"
github "SwiftyJSON/SwiftyJSON" ~> 4.0
github "SnapKit/SnapKit" ~> 5.0.0
github 依赖源,告诉 carthage 去哪里下载文件 ,后面是对应的库的名称 ,格式为 Username/ProjectName
如果是 git 的源,则 git 关键字后面跟的是 git 的地址(git://,http:// ,ssh://开头的地址,或者是本地的地址)
版本号,可选的,它的配置规则如下:
== 1.0 ,表示使用 1.0 版本
>= 1.0 ,表示使用 1.0 或更高的版本
~>1.0 表示使用 1.0 以上但是低于 2.0 的版本,如 1.3,1.6,
版本号还可以是Branch 名
、 tag 名
、 commit 名
即使用特定的分支或标签或提交。commit 名如 5c8a74b 之类的
拉取依赖
配置好文件后,执行下面的命令拉取依赖:
carthage update --platform ios # 意思是指下载只支持iOS的依赖,其他如支持macos的依赖就不下载
拉取完成后项目会多出如下文件
- cartfile: 是我们前面创建的
- Cartfile.resolved:是具体的依赖版本对应关系,为了多端开发一致,这个文件建议提交到版本控制中。这个文件的内容如下:
- Carthage 目录:这个目录里包含从 git 里拉取出来的依赖源文件,它包含两个子目录:
Build 子目录包含了编译后的文件,它包含 Macos 和 iOS 对应的 .framework文件
Checkouts 子目录就是依赖的源文件
配置项目属性
carthage 需要我们手动去配置。
这个配置就是要告诉 xcode 去前面那个 build 子目录找到所有编译好的依赖。
再配置一个脚本,这个脚本的作用就是在编译项目时把编译好的依赖拷贝过来参与编译
接下来就可以愉快地进行开发了。