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

    • 6.png

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

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

    • 8.png

项目使用(源码)

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

不需要其他配置

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容

  • 对于五月天好像真的是走火入魔了 频繁用社交软件 不刷微博觉得人生寂寞 不好好学习又觉得生活空虚 哎 两者难平衡 五...
    小王子的海绵宝宝阅读 412评论 0 0
  • 觉得觅境太难了了 选画的爱心树 麻烦老师指导 谢谢啦!
    叶子酱酱阅读 283评论 2 0
  • 1. 又到年底了,马上就要开启新一波年终奖吐槽大会了。 发馒头的和发奥迪的感觉隔着一个人生。 前几天闺蜜小六还来问...
    九尾狐娘娘阅读 275评论 0 0
  • 1869年4月6号,案中原告请了两个帮工,到马路上捡马粪,晚上6点钟开始干活,干到晚上8点,两个小时。这两个帮工,...
    峰_留学阅读 283评论 0 0