01 Carthage简单介绍

主页:https://github.com/Carthage/Carthage.git

作者:Justin Spahr-Summers等

版本:0.18

目标:用最简单的方式来管理Cocoa第三方框架

性质:第三方框架管理工具(类似于cocoapods) Carthage为用户管理第三方框架和依赖,但不会自动修改项目文件和生成配置,把对项目结构和设置的控制权交给用户。

原理:自动将第三方框架编程为Dynamic framework(动态库)

限制:仅支持iOS8+。它只支持框架,所以不能用来针对iOS8以前的系统版本进行开发

02 Carthage和cocoapods

1)使用了CocoaPods的项目是高度集成的,而Carthage更灵活强调尽可能将任务委托给Xcode和Git。

"CocoaPods在使用中会自动创建和更新workspace、依赖和Pod项目并进行整合;

"Carthage在使用中不需要创建和集成相应的workspace和project,只需要依赖打包好的framework文件即可。

"总结一下,CocoaPods的方法更容易使用,而Carthage更灵活且对项目没有侵入性。

2)CocoaPods相对来说功能要比Carthage多很多,因此也更复杂,而CocoaPods配置简单项目干净。

3)CocoaPods有一个中心仓库,而Carthage是去中心化的,没有中心服务器也就避免了可能因中心节点错误而带来的失败,即Carthage每次配置和更新环境,只会去更新具体的库,时间更快。

4)想让自己的第三方库支持Carthage比让其支持CocoaPods更加的简单。

5)Carthage的不足

① 库依然不如 CocoaPods 丰富

② 仅支持iOS8+

③ 工具尚且不如cocoapods晚上(已经发布了app)

④ 在使用第三方库的过程中无法查看源码

03 Carthage的安装和使用

1)直接下载Carthage.pkg安装包,安装运行

2)如果使用的XCode为7.0+版本,那么也可以使用下面的方法来安装

〇 安装homebrew

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

① 升级brew

$ brew update

② 使用brew来安装

$ brew install Carthage

   

③ 查看版本

   $ Carthage version

04 Carthage的使用

1)先进入到项目所在文件夹

 $ cd 项目路径

2)创建一个空的Carthage文件

$ touch Cartfile

3)编辑cartfile文件,例如要安装AFN框架

git "https://github.com/AFNetworking/AFNetworking.git"

4)保存并关闭cartfile文件,使用cartfile安装框架

$ Carthage update --platform iOS

 5)打开Carthage 查看生产的文件目录

$ open Carthage

  文件目录说明:

"|| Carthage/Checkouts目录:从github获取的源代码

"|| Carthage/Build目录:编译出来的Framework二进制代码库

6) 配置项目

打开项目,点击Target -> Build Phases -> Link Library with Libraries选择Carthage/Build目录中要导入的framework

7)添加编译的脚本(该脚本文件保证在提交归档时会对相关文件和dSYMs进行复制)

(1)点击Build Phases,点击“+” ->  New Run Script Phase

    

(2)添加添加脚本   /usr/local/bin/Carthage copy-frameworks

(3)添加"Input Files"  $(SRCROOT)/Carthage/Build/iOS/AFNetworking.framework

    

8)在项目中使用第三方库 #import <AFNetworking/AFNetworking.h>

其它:

卸载Carthage:$ brew uninstall Carthage

更新第三方框架:

更新多个框架:修改Cartfile文件,并重新执行 $ Carthage update 

更新某个框架:$ Carthage update 具体的框架名称

05 Carthage的工作过程说明

① 创建一个Cartfile文件,在该文件中列出您想使用的框架

② 运行Carthage,获取并编译Cartfile文件中列出的框架

③ 把框架的二进制文件配置到项目中

攻城利器 —— Carthage简单介绍的更多相关文章

  1. Fiddler无所不能——之测试开发攻城狮必备利器

    Fiddler无所不能——之测试开发攻城狮必备利器 1.模拟真实网络环境4g网.3g网络.2g网络.弱网.请求超时 开启弱网Rules——Performance——勾选Simulate Modem S ...

  2. Android优秀资源整理合集(论菜鸟到高级攻城狮)

    转载请注明转自:http://blog.csdn.net/u011176685/article/details/51434702 csdn文章:Android优秀资源整理合集(论菜鸟到高级攻城狮) 时 ...

  3. JBPM4之decision节点:3、程序猿|菜鸟|攻城狮|牛人

    JBPM入门系列文章: JBPM4入门——1.jbpm简要介绍 JBPM4入门——2.在eclipse中安装绘制jbpm流程图的插件 JBPM4入门——3.JBPM4开发环境的搭建 JBPM4入门—— ...

  4. WeX5的简单介绍及UI的简单讲解

    WeX5的简单介绍及UI的简单讲解 (2016-01-13 14:49:05) 标签: it 分类: WeX5的初步自学 一.WeX5的简单讲解 1.WeX5是前端快速开发框架,可开发跨端运行应用.是 ...

  5. 安全攻城狮研发技能栈V1.0,附详细点评~

    2015-12-21 正宗好PT 正宗好PT 今天公司年会,又木有抽到奖,求安慰/(ㄒoㄒ)/~~ 言归正传,我曾经在推特发过一个Skill CheatSheet,被转发和点赞了几百次,我又更新了一下 ...

  6. Android发展简单介绍

    Android一词的本义指“机器人”,同一时候也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统.中间件.用户界面和应用软件组成,号称是首个为移动 ...

  7. SQL Server授权购买简单介绍

    SQL Server授权购买简单介绍 之前有同事问我,使用盗版序列号的SQL Server到底有没有性能限制,之前本人一直没有深入研究过,后来经过一番资料搜集和查证,汇总成这篇文章 微软的SQL Se ...

  8. 浏览器中 F12 功能的简单介绍

    chrome浏览器中 F12 功能的简单介绍 由于F12是前端开发人员的利器,所以我自己也在不断摸索中,查看一些博客和资料后,自己总结了一下来帮助自己理解和记忆,也希望能帮到有需要的小伙伴,嘿嘿! 首 ...

  9. [转]chrome浏览器中 F12 功能的简单介绍

    本文转自:https://www.cnblogs.com/zhuzhubaoya/p/9758648.html chrome浏览器中 F12 功能的简单介绍 由于F12是前端开发人员的利器,所以我自己 ...

随机推荐

  1. 数据库管理员<三>

    数据库管理员  介绍 每个 oracle 数据库应该至少有一个数据库管理员(dba),对于一个小的数据库,一个 dba 就够了,但是对于一个大的数据库 可能需要多个 dba 分担不同的管理职责.那么 ...

  2. Xshell快捷键

    Ctrl + L     清除工作区的内容

  3. python3中的zip

    在 python2 中zip可以将两个列表并入一个元组列表,如: a = [1,2,3,4] b = [5,6,7,8] c = zip(a,b) 结果:c [(1,5),(2,6),(3,7),(4 ...

  4. 如何获取eID——公安部发行的网络实名认证方式

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...

  5. jQuery学习总结(二)

    简单选择器: 在使用jQuery 选择器时,我们首先必须使用“$()”函数来包装我们的CSS 规则. 而CSS 规则作为参数传递到jQuery 对象内部后,再返回包含页面中对应元素的jQuery 对象 ...

  6. BZOJ3175 Tjoi2013 攻击装置(二分图匹配)

    传送门 Description 给定一个01矩阵,其中你可以在0的位置放置攻击装置.每一个攻击装置(x,y)都可以按照"日"字攻击其周围的 8个位置(x-1,y-2),(x-2,y ...

  7. Python操作memcached及redis

    Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...

  8. OpenGL(四)——有用的函数

    概述 1. reshape 定义窗口和图像的映射关系,使在不以纵横比4:3调整窗口大小时,图像不会失真 函数 1. ReShape 如果变更后的窗体的横纵比大于4/3,需要以高为基数,宽为高*4/3, ...

  9. JAVA的String的传值和传地址问题

    关于Java的String类型,可能你会碰到这种情况,将String类型的变量传到一个函数,在这个函数中修改变量的值,但是,实参的值并没有发生改变. Java中String的传值/传地址问题: 例子引 ...

  10. [leetcode 17]Letter Combinations of a Phone Number

    1 题目: Given a digit string, return all possible letter combinations that the number could represent. ...