美文网首页
iOS - Carthage应用

iOS - Carthage应用

作者: 三月望龙 | 来源:发表于2018-10-30 17:06 被阅读0次

    前言

    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

      • 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应用

          本文链接:https://www.haomeiwen.com/subject/azggtqtx.html