一、Carthage介绍

Carthage是GitHub上开源的、用于Cocoa开发的三方依赖管理工具。GitHub地址:https://github.com/Carthage/Carthage
通过Carthage,我们在iOS项目的开发中可以很方便的对三方依赖进行配置管理。
Carthage的原理,简而言之,是通过配置文件Cartfile指定所依赖的三方框架,Carthage通过分析配置文件的内容,通过从github、git仓库或二进制包URL获取依赖,生成为同时包含模拟器和真机目标代码的.framework库。

二、Carthage与CocoaPods比较

2.1 去中心化管理工具:Carthage

  • Carthage用swift开发,支持iOS8以上系统。通过生成framework供项目依赖。
  • 轻量级。
  • 使用简单。
  • 三方依赖灵活自由。

2.2 集中式管理工具:CocoaPods

介绍略

2.3 侵入程度

  • Carthage非侵入式
  • CocoaPods会修改Xcode中的workspace配置,而Carthage不会,对工程配置没有侵入性。

三、Carthage使用

3.1 安装Carthage

终端执行:brew install carthage即可
注意:终端安装,Mac需要先安装homebrew,homebrew的安装可以见我的另一篇博文:新mac安装CocoaPods完整流程

3.2 指定依赖

通过Cartfile文件指定三方依赖

  1. 指定代码仓库,以GitHub为例
    git “https://github.com/liangzhen6/LZImageBrowser” ~> “master”

  2. 指定二进制包地址
    binary “https://xxxxxxxxxxx/test.json”
    而test.json的内容为:
    {
    “2.3”: “https://xxxxxxxxxxx/test.framework.zip”,
    “3.0.3”: “https://xxxxxxxxxxx/test.framework.zip”
    }
    有2个不同版本的test.framework可供使用,可指定使用版本。

注意:Carthage要求通过URL配置二进制包,必须使用HTTPS协议。

3.3 把代码编译成framework

命令:

carthage build --no-skip-current
carthage archive YourFrameworkName

    carthage build --archive

3.4 生成依赖包

  • 运行carthage update命令生成依赖包
  • 编辑完成Cartfile后,在该目录下运行:carthage update --platform iOS platform iOS指定iOS平台,不指定则生成匹配所有平台的依赖包。
  • Carthage会根据指定的配置,在代码仓库或二进制包仓库中查找符合语义版本的最高版本,进行编译生成或下载二进制包,到子目录:Carthage/Build/iOS。同时,Carthage会生成Cartfile.resolved,用于保存经过检查和判断后所明确下来的包的版本。

3.5 集成代码

  • 将Carthage/Build/iOS目录下生成的.framework文件,添加到project工程配置中即可。
  • 为application添加运行脚本,裁剪framework中不必要的目标代码。由于Carthage帮我们生成的framework同时包含了模拟器和真机的目标代码,所以如果我们开发的是framework,那么只需要能够指定依赖并成功通过编译链接即可,但如果我们生成的最终目标是app,那么在打包的时候,我们需要把所依赖的framework中的不同目标代码裁剪掉。换句话说,如果我们编译的是真机版本,在打包的时候需要把所有依赖的framework中的模拟器目标代码才剪掉,否则将导致App Store审核被拒。
  • Carthage提供了命令copy-frameworks,帮助我们简化这个步骤。我们只需要在app的Build Phases中,添加一个Run Script步骤,指定运行命令:/usr/local/bin/carthage copy-frameworks
  • 并且在Input Files和Output Files中指定需要处理的framework即可。具体方法参考:git地址

如何通过Carthage共享自己工程的编译规则

  • Carthage只会编译.xcodeproj中指定为shared的规则(scheme)。通过Xcode中的Manage Schemes…查看是否共享了sheme:
    可以通过carthage build --no-skip-current命令验证是否正确的共享了scheme。

Carthage对于多层依赖管理的处理方式
如果一个依赖包依赖了另外一个依赖包,Carthage只需要集成顶层的依赖包到carlift文件中,Carthage会迭代解析下载所有的依赖包。

Carthage安装使用相关推荐

  1. Carthage 安装以及初步实用

    本人从事 iOS 开发已有5年多,用 swift 开发也有一年多的时间了,此前一直利用 cocopods 管理三方框架和依赖,最近了解到 Carthage 这个工具,本着学习的态度对这工具进行了了解. ...

  2. brew 、carthage 安装

    1.首先安装brew 安装命令如下: curl -LsSf http://github.com/mxcl/homebrew/tarball/master | sudo tar xvz -C/usr/l ...

  3. Appium安装(Mac版)

    一.Appium简介 Appium 是一个开源的.跨平台的测试框架,可以用来测试 Native App.混合应用.移动 Web 应用(H5 应用)等,是当下互联网企业实现移动自动化测试的重要工具. 二 ...

  4. ios依赖管理工具:Carthage

    Cocoa的依赖管理器,我们已经有了CocoaPods,非常好用,那么为什么还要创建这样一个项目呢? 首先,CocoaPods默认会自动创建并更新你的应用程序和所有依赖的Xcode workspace ...

  5. Carthage使用

    # carthage 包管理 ## 安装过程 1) 安装homebrew ``` ruby $ /usr/bin/ruby -e "$(curl -fsSL https://raw.gith ...

  6. Carthage的用法

    可以去https://github.com/Carthage/Carthage/releases下载安装 或者 brew install carthage 安装 使用Carthage 进入到项目所在文 ...

  7. 使用Carthage

    安装Carthage 安装Homebrew ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/ ...

  8. iOS 轻量级包管理工具Carthage了解下

    Why Carthage? 我们已经熟知Cocoapods了,对于工程来说,帮我们自动创建Xcode WorkSpace和所有的依赖,对于依赖库来说,用来做本地local pod或者远程pod都非常好 ...

  9. Swift Xcode12.0如何使用Carthage管理iOS依赖库

    前言 很多ios开发者大概对CocoaPods并不陌生,我们几乎已经习惯了在pod文件中添加一行即可将一个库导入到自己的工程中,不得不说,在ios开发的历史中CocoaPods功不可没,即便在未来它也 ...

最新文章

  1. python请求url非阻塞_Tornado请求中的非阻塞/异步URL获取
  2. api 和 C# 里的接口的区别?
  3. 算法与数据结构(快速排序)
  4. 小车自动往返工作原理_自动气象站的工作原理介绍
  5. 成都女孩弃港大全额奖学金,将去北大读马克思,“我对党史和马克思很有感情”!...
  6. 苹果高通关系紧张背后:不只是专利问题 还有两家公司CEO的私人恩怨
  7. 在odoo服务器文件夹,在windows10上安装odoo12开发环境的方法
  8. 电影推荐系统 python简书_分析9000部电影|一个简单的电影推荐系统
  9. java创建xml文件 编码_Mybatis Generator 1.4.0 通过java编码和xml文件配置
  10. 赤兔oracle恢复软件 收费,赤兔Oracle数据库恢复软件 v11.6
  11. oracle instance client 下载,安装Oracle Instance Client
  12. COMMENT的简单介绍,,及在Navicat中COMMENT的使用方法
  13. 数组之concat注意事项-不更改原数组
  14. 【Android】Android 中定义图片的资源文件
  15. 可口可乐和百事可乐查出杀虫剂成分!
  16. mvcmvpmvvm
  17. 如何让自己开发的web项目实现外网访问
  18. Linux常用工具大全
  19. Python爬虫+数据分析,2019年你想看的A股牛市都在这里了!
  20. 移动支付,华为也想喝点汤

热门文章

  1. MAC系统使用教程,从零到高手使用进阶教程!必备增强软
  2. Matlab批量读取包含数字、字符文件
  3. 初学者怎么理解动态规划
  4. C 懒虫小鑫 SDUT
  5. UMDF的第一个win10驱动:驱动程序开发环境完善(四)
  6. 【问题解决】外部环境分析
  7. java 编程 网易公开课,java毕业设计_springboot框架的社区居民健康档案管理实现
  8. 智合同丨什么是智能合同?
  9. 死了都要try!(转)
  10. 北斗B1I测距码的产生以及matlab程序,FPGA程序