carthage是一个和cocopods类似的第三方库管理工具。Carthage是一个新的第三方库管理工具,它轻耦合,使用很灵活,不会修改项目文件,使用xcodebuild工具来编译第三方库,Carthage只支持动态框架库。
carthage和cocopods区别
cocopods:
- 中心化的三方库管理工具,需要开发者将代码提供到中心服务器。
- 希望建立一个生态系统,可以更加方便的发现和集成第三方代码库,使用起来方便。
- 自动建立和更新一个Xcode workspace,用来管理你的项目和所有依赖。
- 需要配置podspec文件,包含了项目和第三方库的信息。
cocopods缺点:
- 每次更新环境都需要连接到中心仓库,比较耗时
- 繁琐的维护过程
- 每次编译都会把所有第三方库都重新编译一次
Carthage:
- 去中心化的,使用git托管第三方库,这样的好处在于可以替换三方库的来源。
- 使用xcodebuild来编译出二进制库,剩下的集成工作完全交给开发人员。
- 更加灵活并且对现有项目没有太多的侵略性
- 希望变成一个去中心化的依赖管理系统,不提供中心化的项目列表,减少维护成本和单点失败的概率。
- 并不使用类似的配置文件,第三方库的依赖关系是通过Xcode项目来配置的。
- 在swift中使用很方便,它本身就是swift写的。
Carthage缺点:
- 仅支持 iOS8 +
- 它只支持Framework,所以不能用来针对 iOS 8 以前的系统版本进行开发
- 支持的 Carthage 安装的第三方框架和依赖不如 CocoaPods 丰富
- 无法在 Xcode 里定位到源码,只可以看到一个库的头文件
- 安装包的大小比用CocoaPods安装的包大
- 每次update时,需要从git仓库中重新拉取下载,比较耗时
Carthage安装
- 使用Homebrew安装Carthage之前,先对其进行更新:
1 | sudo brew update |
- 安装Carthage
1 | sudo brew install carthage |
安装完毕后的路径 /opt/homebrew/Cellar/carthage
如果xcode 报错 /usr/local/bin/carthage : No such file or dictionary,将上面路径下的carthage中的二进制文件拷贝到/usr/local/bin/路径下面。
- 查看及升级Carthage版本
1 | carthage version |
- 卸载Carthage
1 | sudo brew uninstall carthage |
Carthage使用
1.创建Cartfile文件:
- 创建一个文件用于配置安装哪些库(cd 进入到工程项目)
1 | touch Cartfile |
- 导入库,例如SVProgressHUD,在创建的Cartfile文件中编辑
1 | github "SVProgressHUD/SVProgressHUD" ~> 1.0 |
1 | ~>3.0:表示使用版本3.0以上但是低于4.0的最新版本,如3.5, 3.9。 |
- 保存退出,下面就该安装了
1 | Carthage update --platform iOS |
- 安装完毕后工程目录如下:
2.配置xcode项目:引入Framework
- Target -> Build Phases -> Link Library with Libraries选择Carthage/Build导入framework
点击Build Phases,点击“+” -> New Run Script Phase
添加添加脚本 /usr/local/bin/Carthage copy-frameworks
添加”Input Files” $(SRCROOT)/Carthage/Build/iOS/SVProgressHUD.framework
使用
- 在项目文件中导入
1 | #import <SVProgressHUD/SVProgressHUD.h> |
注意:Carthage包管理由于使用的是动态库,有的三方库不支持模拟器调试!!必须使用真机!!
- 本文作者: Grx
- 本文链接: https://ruixiaoguo.github.io/Grx.github.io/Grx.github.io/2022/01/19/Carthage包管理三方库/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!