iOS - CocoaPods 和 Carthage 的比较

一、CocoaPods

CocoaPods是什么?

  • CocoaPods 是一个负责管理 iOS 项目中第三方开源库的工具。
  • 主页:https://github.com/CocoaPods
  • 作者:CocoaPods 团队
  • 版本:1.4.0
  • 性质:CocoaPods 在引入第三方库时自动为我们完成各种配置(包括配置编译阶段、连接器选项、甚至是 ARC 环境下的 -fno-objc-arc 配置等);CocoaPods 可以很方便的查找第三方库,可以快速方便的寻找到优秀的第三方库以及它们的各种信息。
  • 原理:CocoaPods 的原理是将所有的依赖库都放到另一个名为Pods的项目中,然后让主项目依赖 Pods 项目,这样,源码管理工作都从主项目移到了 Pods 项目中。Pods 项目最终会编译成一个名为 libPods.a 的文件,主项目只需要依赖这个 .a 文件即可。
  • 限制:会破坏文件结构,因为墙的原因有时会 pod install 失败,换成国内的源,导入第三方很慢,特别是大工程。

怎么使用 CocoaPods 导入项目

1、安装 CocoaPods
(1)替换 ruby
(2)更新 Gem 版本
(3)安装 CocoaPods
(4)更新 Podspec 索引文件

2、使用 CocoaPods
(1)新建 Podfile 文件
(2)编辑 Podfile 文件
(3)安装依赖开源库 或 更新第三方库
3、打开 xxx.xcworkspace 文件

让你的工程支持 CocoaPods

1、首先在 github 创建一个项目
2、在本地新建一个文件夹
3、新建一个 Classes 文件夹用来放我们需要支持的类
4、进入到有 .git 的文件夹内,生成 {project}.podspec 格式的文件
5、podspec 文件用 xcode 打开并配置一些需要的参数
6、创建 Tag,并推送到 GitHub
7、验证 podspec 文件,第一次提交会收到邮件,点击链接验证,提交完成。

CocoaPods 好处?

  • 开发 iOS 项目不可避免地要使用第三方开源库,CocoaPods 的出现使得我们可以节省设置和更新第三方开源库的时间
  • 在引入第三方库时它可以自动为我们完成各种各样的配置,包括配置编译阶段、连接器选项、甚至是 ARC 环境下的 -fno-objc-arc 配置等

二、Carthage

Carthage 是什么?

  • 主页:https://github.com/Carthage/Carthage.git
  • 作者:Justin Spahr-Summers 等
  • 版本:0.6.6
  • 目标:用最简单的方式来管理 Cocoa 第三方框架
  • 性质:使用 swift 编写。Carthage 编译你的依赖,并提供框架的二进制 .framework 文件,但你仍然保留对项目的结构和设置的完整控制,Carthage 不会自动的修改你的项目文件或编译设置。是一个去中心化的 Cocoa 依赖管理工具。
  • 原理:自动将第三方框架编程为 Dynamic framework(动态库)
  • 限制:仅支持 iOS8+。它只支持框架,所以不能用来针对 iOS8 以前的系统版本进行开发

怎么使用 Carthage 导入第三方库?

1、安装 Carthage
有三个方法
(1)直接下载安装包:地址,dmg 文件,直接打开安装
(2) 使用 Homebrew 安装,在终端运行:
brew update
brew install carthage
(3) 使用 Xcode 运行最新的开发版,clone Carthage 的仓库到本地,make install

2、使用 Carthage
(1)终端切换到工程目录,输入命令,创建一个 Cartfile 文件: touch Cartfile
(2)使用任何编辑器(如 Xcode、文本编辑、subtime line)打开 Cartfile 文件,输入以下内容:github "SnapKit/SnapKit",然后保存关闭。
(3)使用终端:carthage update --platform iOS
(4)把 framework 加入你的项目:打开项目,选择 Targets -> CarthageDemo -> Build Phases ->
Link Binary With Libraries -> 点击 + 号 -> Add Other -> 找到 framework 添加
(5)现在点击 Build Phases(还是在当前选项卡) 左上角的 + 号,选择 New Run Script Phase ,填写内容。完成。

让你的工程支持 Carthage

1、在已经写好的工程中。创建一个 Framework
2、配置你的 Framework
(1)选择你的工程
(2)选择 framework 所在的 Target
(3.选择 Build Phases
(4)点击 Header 左下角的+号把你要暴露的头文件添加到 Public 里面(默认添加到 Project 里面,用鼠标把它拽过去)
(5)在Compile source里面添加实现的.m文件
3、分享你的工程
(1)选择 Manager Schemes,勾上 shared (这样 Carthage 就可以编译你的工程)
(2)安装好 Carthage 的前提,我们 cd 到项目文件夹,运行:carthage build —no-skip-current
(3)完成

Carthage 好处?

  • 通过Carthage可以将一部分不常变的库打包成framework,再引如到主工程,这样可以减少开发过程中的编译时间。
  • 可以将一些编译时间很长的库打包成framework。
  • 国内防火墙的缘故,有些库的下载慢到一定境界,这个时候,使用Carthage就是福音了。
  • 同时可以优化CI的编译、打包时间。

三、Carthage 和 CocoaPods 的不同之处:

CocoaPods (默认)自动建立和更新一个 Xcode workspace,用来管理你的项目和所有依赖。Carthage 使用xcodebuild 来编译出二进制库,剩下的集成工作完全交给开发人员。
CocoaPods 使用起来方便,Carthage 更加灵活并且对现有项目没有太多的侵略性。
CocoaPods 希望建立一个生态系统,可以更加方便的发现和集成第三方代码库。Carthage 希望变成一个去中心化的依赖管理系统,不提供中心化的项目列表,减少维护成本和单点失败的概率。不过这样给开发人员寻找项目带来不便。
CocoaPods 的项目需要配置 podspec 文件,包含了项目和第三方库的信息。Carthage 并不使用类似的配置文件,第三方库的依赖关系是通过 Xcode 项目来配置的。

四、结论

选择这两个工具前,首先需要确定使用的第三库,是否支持 Carthage ,以这个为标准以下三种情况:
1、都支持 Carthage:使用 Carthage
2、部分支持 CarthageCarthageCocoaPods 混合使用。
3、都不支持 Carthage:使用 CocoaPods

------本文结束 感谢阅读------

本文地址:http://kaaaaai.cn/articles/036.html
本文基于 知识共享署名-相同方式共享 4.0 国际许可协议发布
转载请注明出处,谢谢!

众筹项目:拯救世界!
0%