iOS - Carthage应用

前言

Carthage 的目标是提供一种比 CocoaPods 更简单的工具,更加容易理解、维护和灵活。

它通过许多方式来实现这点:

  • Carthage 不会修改你的 Xcode 项目或者强制你使用 workspace
  • 它不使用 Podspecs 或者不需要第三方库作者将他们的 pod提交到集中式存储库。如果你的项目能够以 framework形式构建,它就可以用在 Carthage 上。它能够直接使用 GitXcode 中现成的信息。
  • Carthage 其实没有做太多的改变,全都是靠你自己来控制。你手动添加依赖到项目中,Carthage 会下载和编译它们。

注意:Carthage自身是用 Swift 编写的,Carthage 为了简单起见使用的是动态框架。这意味着你的项目必须支持 iOS 8 以上。

Carthage安装

  • 安装方式有两种

    • 安装包方式
      • 下载 Carthage 安装包(.pkg).
      • Continue 然后 Install.
    • Homebrew方式
      • $ brew install carthage
  • 查看是否安装成功

    • $ carthage version

Carthage使用

创建步骤

  • 进入项目根目录(即和 .xcodeproj 相同路径)

  • 创建 Cartfile 文件: $ touch Cartfile

    • 2.png
  • Cartfile文件中添加项目需要的库

    • 1.png
  • 执行命令:$ carthage update --platform iOS

    • 3.png

    $ –-platform iOS 选项确保只编译 iOSframework。如果你不指定平台,默认会编译全部平台(MaciOSTV)。

Cartfile文件格式

Carfile 语句都由两个关键的信息组成:

  • 依赖源:告诉 Carthage 从哪里下载依赖。Carthage 支持两种源:

    • Github:用于 Github 类项目。你可以指定一个 GitHub 项目,以 用户名/项目名称 的格式,就像你在上面用的一样。
    • GitGit 代码库。git 关键字后面跟上 git 库所在的路径,可以是远程 URL 比如 git://http:// 或者 ssh://,也可以是本地地址,指向你开发机上的某个 git 库。
  • 依赖版本:告诉 Carthage 依赖的版本:

    • == 1.0 表示 使用精确的 1.0 版本

    • >= 1.0 表示 1.0 或者更高版本

    • ~> 1.0 表示 使用任意和 1.0 兼容的版本, 其实就是从某个版本开始,直到下一个大版本发布。

      如果是 ~> 1.7.5,那就是从 1.7.5 开始往上,但不包括 2.0,因为那是不兼容版本。

      如果是 ~> 2.0Carthage 会使用 2.0 或更高版本,但低于 3.0 版本。

    • 分支名/tag名/提交名表示 使用指定的 git 分支/tag/提交。例如,如果你可以指定使用 master 分支,或者具体某次提交。

    如果你不指定版本的话,Carthage 会使用和其它依赖兼容的最新版本。

Carthage编译生成的库

  • 当执行 $ carthage update 时,Carthage 会生成几个文件和目录:
    • 4.png
    • Cartfile.resolved: 这个文件用于作为 Cartfile 的补充。它定义了 Carthage 真正使用和安装的依赖版本。极力推荐将这个文件提交到你的版本控制库中,因为它保证了别的开发者一开始就能够和你的依赖版本保持一致。

    • Carthage 目录,包含两个子目录:

      • Build:包含了每个依赖编译好的 framework。集成到项目中的库。每个 framework 要么从源代码编译得来,要么从 GithubReleases 页中下下来。
      • Checkoutscheck out 下来的依赖的源代码,这些源代码将被编译成 frameworkCarthage 内部会自己维护依赖库的缓存,因此同样的源代码在不同的项目中不需要重复克隆。

项目使用(framwork

  • 添加依赖库(Build文件夹下)
    • 5.png
  • 配置Build Phases

    • iOS - Carthage应用_第1张图片
      6.png

    如果不配置Build Phases,项目会报错,以SDWebImage为例,会报错:Reason: image not found

    7.png
  • 其他配置(待验证
    • 为了避免提交AppStore时因为app中的 framework 中包含有 iOS 模拟器的二进制 image被拒,添加脚本:copy-frameworks,将不用的架构去除.

    • 8.png

项目使用(源码)

  • 添加依赖库源码(Checkouts文件夹下)
    • 9.png

不需要其他配置

你可能感兴趣的:(iOS - Carthage应用)