依赖管理工具-Carthage

Carthage是一个致力于通过一种简单的方式,来管理我们应用的库的工具。相较于CocoaPods,更轻量级、更容易上手。

使用CocoaPods的童靴一定遇到过这样的问题,pod install or update一次以后,漫长的编译就开始了。随着项目组件化的开展,引入的pod越来越多这个编译过程也随之越来越长。有没有办法能够适当的减少这一个过程?

项目升级到iOS8以后,Carthage的好处就呼之欲出。

先来看看Carthage如何使用?

简单使用

  1. 新建一个Cartfile,列出你需要引用的framework。
  2. 运行Carthage,根据Cartfile,编译每一个库。
  3. 将第二步产生的.framework拽到你的工程中。

从使用步骤可以看出,Carthage的作用主要是生成.framework,依赖还是要我们自己来处理。

为什么要使用Carthage?

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

Carthage还有一个好处就是,可以与Cocoapods无缝对接。两者可以同时使用。
当然也有一些不那么友好的地方如:

  1. 需要手动引用库
  2. 一些第三方库还不支持Carthage
  3. 引入的库只能看到头文件,无法查看源码等。

说了这么多,再来说说,具体怎么用?

安装

直接通过brew进行安装。

brew update
brew install carthage

使用

  1. 新建Cartfile,引入需要安装的库。

    /* ~>的使用与CocoaPods相同 */
    /* 3.2.0为对应的tag */
    github "SnapKit/SnapKit" ~> 3.2.0
    /* 通过url直接引用 */
    github "https://******/test.git"
    
  2. carthage update根据Cartfile拉取代码,并Build成对应的.framework

    在主工程目录下,会生成一个Carthage文件夹,里面有两个子文件夹
    |- Build 存放所有编译完成的.framework文件
    |- Checkouts 存放源码

    通过--platform ios指定对应平台的framework,可以减少无畏的编译时间,默认是全平台编译。carthage update --platform ios

  3. 将Build中生成的库拽入主工程中

  4. 添加运行脚本,/usr/local/bin/carthage copy-framewrks,并未每一个拽入主工程的framework添加一个Input Files和一个Output Files(ps: 图最下一个红框)

  5. 添加Search Path

以上,Build你的工程,可以享受Carthage给你带来的快感了。

制作自己的Carthage库

用过CocoaPods私有库的同志一定会问,我们该怎么制作支持Carthage的库呢?
简单到难以置信

方法一

  1. 新建一个动态库
  2. 勾选schemes中,对应scheme的shared
  3. 引用
    github "your git url"
    

    方法二

    对于有些直接放到主工程中开发的项目,要使用Carthage进行引用。只需要添加一个Framework 的Target即可。

还需处理的问题

多个库同时依赖另一个库怎么处理?
CocoaPods库的依赖库为Carthage中添加的库时怎么处理?
如何通过合理的拆分业务,减少编译时间?

引用

(译)Carthage 使用说明 CarthagePods —— 一个整合 CocoaPods 和 Carthage 一起使用的工具
I have a pod, I have a carthage, En...

results matching ""

    No results matching ""