cocoapods的优点:
1)使用方便,除了编写podfile之外其他几乎都是自动完成。
- 开发iOS不可避免的要使用第三方开源库,cocoapods的出现使得我们可以节省设置和更新第三方开源库时间。
- 在引入第三方库的时候它可以自动为我们完成各种各样的配置,包括配置编译阶段,连接器选项,甚至是ARC环境下的 -fno-object-arc配置等。
2)软件包数量多,主流支持。
3)支持iOS8 Framework,当然也支持旧的静态编译。
cocoapods的缺点:
- 每次更新环境都需要链接到中心仓库,比较耗时;
- 开发者使用比较简单,但是如果创建兼容cocoapods的库,就会相对繁琐一些(尽管有了命令行)。
- 每次重新编译都会把所有第三方库重新编译一次。
carthage的优点:
所有第三方库依赖,除非是更新的需要,不然平时clean project之后编译,它是不需要再次编译的,这样会大大减少编译和archive的时间。
- 通过carthage可以将一部分不常变的库打包成framework,再引入到主工程,这样可以减少开发过程中的编译时间。
- 可以将一些编译时间很长的库打包成framework。
- 国内防火墙的缘故,有些库的下载很慢,使用carthage可以避免这个问题。
- 同时可以优化CI的编译,打包时间。
- 它是去中心化的,没有中心服务器:这意味着每次配置和更新环境,只会去更新具体的库,而不会有一个向中心服务器获取最新库的索引这个过程,如此又解决了时间。
- 可以和cocoapods无缝集成:一个项目可以同时使用两套包管理工具,当前cocoapods管理主要framework的配置下,将少量其他framework交给了carthage管理,二者可以和谐共存。
- 结构标准的项目天然石carthage库。
carthage的缺点:
支持的库不如cocoapods丰富:尽管很多库不需要声明并改造就直接可以被carthage使用,但依然有大量cocoapods能用的库不支持,相信以后随着时间推移能解决这个问题。 只支持framework,所以是iOS 8 only了,相信以后随着时间推移也能解决这个问题。 工具仍不完善:在使用过程中,发现它无法在一个结构复杂的项目中正确找到库(比如有iOS,Mac demo + framework的结构)。 无法在xcode中定位到源码:如果你在写代码过程中,想跳转到一个第三方库中去看具体的实现,这是无法办到的,carthage的配置只能让你看到一个库的头文件。
carthage和cocoapods的不同之处
1、cocoapods自动建立和更新一个xcode workspace,用来管理项目和所有依赖。
- carthage使用xcodebuild来编译出二进制库,集成工作由开发人员自行完成。 2、 cocoapods使用起来方便,carthage更加灵活并且对现有项目没有太多侵略性。
- cocoapods是一整套有中心仓库的解决方案,我们在podfile中指定好我们需要的第三方库,cocoapods就会进行下载集成,然后修改或者创建我们项目中的workspace文件,这一系列的整体操作。
- carthage轻量很多,通过cartfile这个描述文件配置第三方库,但carthage不会对项目结构进行修改,不会创建workspace。只是根据描述文件将第三方库下载到本地,然后用xcodebuild构建成framework文件,由我们自己集成到项目中。所以比cocoapods有非侵入性的特点。