在项目中究竟是使用Carthage管理第三方库,还是使用CoocaPods管理第三方库?如果是个人独立开发,看自己的喜好了;如果是团队开发,以团队成员商量结果为准。
一. Carthage是什么?
1.主页:Carthage:https://github.com/Carthage/Carthage
2.目标:Carthage旨在使用最简单的方式来管理Cocoa等第三方框架。
3.原理:自动将第三方框架编译为动态库(Dynamic framework)。
4.优点:Carthage为用户管理第三方框架和依赖,但不会自动修改项目文件或构建设置,开发者可以完全控制项目结构和设置。
5.缺点:只支持iOS 8.0+,不能用来开发iOS 8.0以前的项目。
二.Carthage与CocoaPods的区别
1、Cocoapods通过创建一个更集中的生态系统来提高第三方开源库的可维护性和参与度,而Carthage强调尽可能灵活的将任务委托给Xcode和Git;
2、Cocoapods在使用中会自动创建和更新workspace、依赖和Pod项目并进行整合;
3、Carthage在使用中不需要创建和继承相应的workspace和project,只需要依赖打包好的framework文件即可。## 三.初始化项目
三.总结:
1.Cocoapods的方法更加简单粗暴容易使用,而Carthage则更灵活且对项目没有侵入性。
2.CocoaPods项目还必须具有Podspec文件,其中包括有关该项目的元数据,并指出如何构建它。Carthage用于Xcode构建依赖关系,而不是将它们集成到单个工作空间中,它没有类似的规范文件。
3.Cocoapods有一个中心仓库,而Carthage是去中心化的,没有中心服务器也就避免了可能因中心节点错误而带来的失败,也减少了维护,即Carthage每次配置和更新环境,只会去更新具体的库,所需时间更短。
四.Carthage存在的一些缺陷:
1、支持Carthage的第三方库依然不如CocoaPods丰富;
2、仅支持iOS 8.0+;
五.Carthage的安装:
安装Carthage,在终端运行:brew update,等待运行结束后,接着运行:brew install carthage,这样Carthage就安装完成了
六.Carthage的使用:
1、新建一个iOS工程(使用Xcode8.3.3创建)
2、使用Carthage安装第三方库:
1、先进入到项目所在的文件夹
$ cd ~/Path/CartHageDemo
2、创建一个空的Cartfile文件
$ vim Cartfile
3、编辑Cartfile文件,例如要安装MBProgressHUD框架
github “jdg/MBProgressHUD” ~> 1.0.0
4、保存并关闭Cartfile文件,使用Carthage安装框架
$ carthage update
到此为止,MBProgressHUD就已经安装到项目中了
对比上面的文件目录,发现多了三个文件:
1.Cartfile文件:是开发者自己维护的,添加删除第三方库等;
2.Cartfile.resolved文件:运行carthage update命令后,Cartfile在项目目录中创建了一个名为Cartfile.resolved的文件。该文件精确地为每个版本指定了依赖项,并列出所有依赖关系(甚至是嵌套的依赖项);
3.Carthage文件夹:打开Carthage文件夹可以看到,里面包含两个文件夹:
####(1)Checkouts目录:从github获取的源代码;
####(2)Build目录:编译出来的.framework二进制代码库。
七.配置项目:
打开项目,点击Target -> General -> Link Library with Libraries选择Carthage/Build目录中导入的framework
八.添加编译脚本:
点击Target -> Build Phases -> “+” -> New Run Script Phase
展开Run Script,
1、在shell下面输入:/usr/local/bin/Carthage copy-frameworks;
2、在Input Files中加入:$(SRCROOT)/Carthage/Build/iOS/MBProgressHUD.framework;
3、在Output Files中加入:$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/MBProgressHUD.framework
九.在项目中使用:
#import
- 本文作者: Grx
- 本文链接: https://ruixiaoguo.github.io/Grx.github.io/Grx.github.io/2019/07/30/Carthage 的使用-iOS第三方库的管理/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!