CocoaPods 是非常好用的第三方依赖管理工具。它于2011年发布,经过这几年的发展,已经非常完善。CocoaPods 支持项目中采用 Objective-C 或 swift 语言。CocoaPods 会将第三方库
的源代码编译为静态库 .a 文件或者动态框架 .framework 文件的形式,并将它们添加到项目
中,建立依赖关系。
Carthage 是一个轻量级的项目依赖管理工具。Carthage 主张“去中心化”和“非侵入性”。CocoaPods 搭建了一个中心库,第三方库被收入到该中心库,所以没有收录的第三方库是不能使用 CocoaPods 管理的,这就是所谓的“中心化”思想。而 Carthage 没有这样的中心库,第三方库基本上都是从 GitHub 或者私有 git 库中下载的,这就是“去中心化”。另外,CocoaPods 下载第三方库后,会将其编译成静态链接库或者动态框架文件,这种做法会修改 Xcode 项目属性配置依赖关系,这就是所谓的“侵入性”。而 Carthage 下载成功后,会将第三方库编译为动态框架,由开发人员自己配置依赖关系,Carthage 不会修改 Xcode 项目属性,这就是所谓的“非侵入性”。
今天主要讲Carthage进行项目管理
Carthage安装
brew update
brew install carthage
切换的项目路径下
touch cartfile
编辑cartfile内容比如我要导入Alamofire
github "Alamofire/Alamofire" "5.0.0-rc.3"
并保存,然后输入命令
carthage update --platform iOS
Alamofire这个库支持多个平台,这里我们制定iOS平台
这样在项目文件夹下就生成了Cartfile.resolved 文件和 Carthage 目录
carthage
Cartfile.resolved 文件:
1.这个文件是生成后的依赖关系以及各个库的版本号,不能修改。
2.确保提交的项目可以使用完全相同的配置与方式运行启用。 跟踪项目当前所用的依赖版本号,保持多端开发一致,出于这个原因,建议提交这个文件到版本控制中。
Carthage 目录:
1.Checkouts 保存从git拉取的依赖库源文件。
2.Build 包含编译后的文件,包含 Mac 与 iOS 对应的 .framework。
接下来项目配置
项目 Target -> Build Setting -> Search Paths -> Framework Search Paths 添加 $(PROJECT_DIR)/Carthage/
Build/iOS
配置
项目Target -> Build Phases -> '+' -> New Run Script Phase:
• 添加脚本 /usr/local/bin/Carthage copy-frameworks
• 添加"Input Files" $(SRCROOT)/Carthage/Build/iOS/Alamofire.framework
配置2
如果有多个第三方库,就要配置多个input Files
网友评论