Carthage安裝和使用

一.Carthage是什么茬缩?

Carthage 使用于 Swift 語(yǔ)言編寫(xiě),只支持動(dòng)態(tài)框架,只支持 iOS8+的Cocoa依賴(lài)管理工具揪漩。

與現(xiàn)在流行的 CocoaPods 不同,Carthage編譯你的依賴(lài)吏口,并提供框架的二進(jìn)制.framework文件奄容,但你仍然保留對(duì)項(xiàng)目的結(jié)構(gòu)和設(shè)置的完整控制冰更,Carthage不會(huì)自動(dòng)的修改你的項(xiàng)目文件或編譯設(shè)置。是一個(gè)去中心化的Cocoa依賴(lài)管理工具

二.如何下載和安裝Carthage昂勒?

使用Brew安裝(建議)

1.安裝Mac OSX流行的的軟件包管理工具Homebrew之前要檢查Mac中是否有Ruby環(huán)境,目前的版本基本都內(nèi)置了Ruby,終端輸入

1

ruby-v

顯示類(lèi)似 ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]

1

brew-v

顯示類(lèi)似文本 Homebrew 0.9.9 (git revision 2f20; last commit 2016-05-15) 說(shuō)明已經(jīng)安裝brew不需要再次安裝

2.如果電腦中沒(méi)有Homebrew,終端執(zhí)行腳本安裝即可

1

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

3.每次使用 Homebrew 進(jìn)行安裝Carthage 或者其他軟件之前,習(xí)慣性的先對(duì)Homebrew進(jìn)行更新一下, 不然可能會(huì)安裝到比較老版本的Carthage等軟件

1

brewupdate

提示 Already up-to-date.......? 更新到最新啦!!

4.假如你在本地已經(jīng)安裝好Homebrew環(huán)境蜀细,那么下載和安裝carthage將十分簡(jiǎn)單,只需要一行命令戈盈。

1

brewinstallcarthage

PKG文件安裝

直接下載pkg文件:https://github.com/Carthage/Carthage/releases 進(jìn)行安裝即可

三.如何使用Carthage奠衔?

包管理工具,不管是CocoaPods,還是Node 的NPM,配置依賴(lài)管理都是在工程目錄,建立相應(yīng)的配置文件,Carthage的配置文件即 Cartfile文件

添加 Cartfile 文件 (需要提交到 Git)

建立添加Cartfile(配置文件)文件在

通過(guò)終端或者文本編輯器 進(jìn)入到項(xiàng)目所在的文件夾建立一個(gè) 空的Cartfile文件

現(xiàn)在只支持GitHub庫(kù)(GitHub.com和GitHub企業(yè)),指定GitHub的關(guān)鍵字:

1

2github"ReactiveCocoa/ReactiveCocoa"# GitHub.com

github"https://enterprise.local/ghe/desktop/git-error-translations"# GitHub Enterprise

或者是其他git源,指定git關(guān)鍵詞:

1

git"https://enterprise.local/desktop/git-error-translations2.git"

其他可能的源在未來(lái)也會(huì)會(huì)被添加

版本指定

Carthage 支持以下幾種版本指定方法:

>= 1.0代表 “最低 1.0版本”

~> 1.0代表 “表示使用版本1.0以上但是低于2.0的最新版本,如1.5, 1.9”

== 1.0代表 “必須是 1.0 版本”

"some-branch-or-tag-or-commit"指定一個(gè) Git 對(duì)象 (任何被git rev-parse允許的)

如果沒(méi)有版本要求,任何版本的依賴(lài)是允許的塘娶。

版本好的兼容性是根據(jù)語(yǔ)語(yǔ)義化版本控制決定的归斤。這意味著任何大于或等于1.5.1版本,但小于2.0,將認(rèn)為與1.5.1“兼容”。

Cartfile示例

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23# Require version 2.3.1 or later 最低2.3.1版本

github"ReactiveCocoa/ReactiveCocoa">=2.3.1

# Require version 1.x?? 必須1.x版本

github"Mantle/Mantle"~>1.0# (大于或等于 1.0 刁岸,小于 2.0)

# Require exactly version 0.4.1 必須0.4.1版本

github"jspahrsummers/libextobjc"==0.4.1

# Use the latest version??使用最新版本

github"jspahrsummers/xcconfigs"

# Use the branch??使用git分支

github"jspahrsummers/xcconfigs""branch"

# Use a project from GitHub Enterprise??使用一個(gè)企業(yè)項(xiàng)目官册,在 "development" 分支

github"https://enterprise.local/ghe/desktop/git-error-translations"

# Use a project from any arbitrary server, on the "development" branch??使用一個(gè)私有項(xiàng)目,在 "development" 分支

git"https://enterprise.local/desktop/git-error-translations2.git""development"

# Use a local project?? 使用一個(gè)本地的項(xiàng)目

git"file:///directory/to/project""branch"

安裝依賴(lài) just do it

執(zhí)行以下命令 拉取指定版本代碼并編譯為 .Framework 文件

內(nèi)部工作流程即? carthage update => carthage checkout => checkout build

1

carthageupdate

只編譯iOS平臺(tái)的類(lèi)庫(kù)

1

carthageupdate--platformiOS

結(jié)果如下,(PS我只留了一個(gè)Mantle依賴(lài))

1

2

3

4

5

6

7Jakey-Pro:testjakey$carthageupdate

***FetchingMantle

***CheckingoutMantleat"1.5.7"

***xcodebuildoutputcanbefoundin/var/folders/sm/b5fssgjx147b722vsgx20mg00000gn/T/carthage-xcodebuild.b3IHTG.log

***Buildingscheme"Mantle Mac"inMantle.xcworkspace

...balabala

工程目錄多了以下文件

Cartfile.resolved (需要提交到 Git)

在執(zhí)行 carthage update 命令后會(huì)在根目錄創(chuàng)建一個(gè) Cartfile.resolved 文件难捌,這個(gè)文件是生成后的依賴(lài)關(guān)系膝宁,不能修改。

Cartfile.resolved 文件確保提交的項(xiàng)目可以使用完全相同的配置與方式運(yùn)行啟用根吁。 跟蹤項(xiàng)目當(dāng)前所用的依賴(lài)版本號(hào)员淫,保持多端開(kāi)發(fā)一致,出于這個(gè)原因,強(qiáng)烈建議提交這個(gè)文件到版本控制中。

自動(dòng)生成的Carthage目錄 (不需要提交到 Git)

Carthage文件夾用來(lái)存放:

carthage checkout 從git拉取的依賴(lài)庫(kù)源文件(Checkouts)

carthage build編譯后的文件(Build),包含Mac 與 iOS對(duì)應(yīng)的.framework

引入 .Framework 動(dòng)態(tài)庫(kù)的方法

1.手動(dòng)拖拽Build中的所有依賴(lài).framework到你的工程,本人的建議當(dāng)然是在工程根目錄建立"Vendor"類(lèi)似文件夾,創(chuàng)建"Vendor" folder/group到工程,所有第三方?.Framework都拷貝到此目錄下,然后繼續(xù)以下操作

打開(kāi)項(xiàng)目击敌,點(diǎn)擊project介返,選擇target, 再選擇上方的General,將需要的framework文件拖到 Embedded? Binaries(動(dòng)態(tài)庫(kù))內(nèi)

注意:動(dòng)態(tài)庫(kù)拷貝到Embedded? Binarie會(huì)同時(shí)自動(dòng)加入到Linked Frameworks and Libraries,但是錯(cuò)誤的拖入到Linked Frameworks and Libraries是不會(huì)自動(dòng)增加到Embedded? Binarie中的,會(huì)導(dǎo)致動(dòng)態(tài)庫(kù)加載失敗

2.在對(duì)應(yīng) Target 中的 Build Setting 中的 Framework Search Path 項(xiàng)加入以下路徑沃斤,Xcode 便會(huì)自動(dòng)搜索目錄下的 Framework:

1

$(PROJECT_DIR)/Carthage/Build/iOS

四.Git 中忽略不需要提交到版本庫(kù)的文件與文件夾

則修改 .gitignore 文件圣蝎,增加忽略 Carthage 文件夾就行了:

#Carthage

Carthage

五.總結(jié)

本人在實(shí)際項(xiàng)目中遲遲沒(méi)有使用CocoaPods的原因就是,啰里啰嗦...對(duì)原有工程破壞性大(建立workspace,增加一堆亂七八糟的文件),侵入性太強(qiáng),耦合太高,Carthage的出現(xiàn)的確是茉莉花香撲鼻而至!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市衡瓶,隨后出現(xiàn)的幾起案子徘公,更是在濱河造成了極大的恐慌,老刑警劉巖哮针,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件关面,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡十厢,警方通過(guò)查閱死者的電腦和手機(jī)等太,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蛮放,“玉大人缩抡,你說(shuō)我怎么就攤上這事“洌” “怎么了瞻想?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵压真,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我内边,道長(zhǎng)榴都,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任漠其,我火速辦了婚禮嘴高,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘和屎。我一直安慰自己拴驮,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布柴信。 她就那樣靜靜地躺著套啤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪随常。 梳的紋絲不亂的頭發(fā)上潜沦,一...
    開(kāi)封第一講書(shū)人閱讀 48,970評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音绪氛,去河邊找鬼唆鸡。 笑死,一個(gè)胖子當(dāng)著我的面吹牛枣察,可吹牛的內(nèi)容都是我干的争占。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼序目,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼臂痕!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起猿涨,我...
    開(kāi)封第一講書(shū)人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤握童,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后嘿辟,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體舆瘪,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年红伦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片淀衣。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡昙读,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出膨桥,到底是詐尸還是另有隱情蛮浑,我是刑警寧澤唠叛,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站沮稚,受9級(jí)特大地震影響艺沼,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蕴掏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一障般、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧盛杰,春花似錦挽荡、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至逗嫡,卻和暖如春青自,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背驱证。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工延窜, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人雷滚。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓需曾,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親祈远。 傳聞我的和親對(duì)象是個(gè)殘疾皇子呆万,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • Carthage是什么? Carthage 使用于 Swift 語(yǔ)言編寫(xiě)车份,只支持動(dòng)態(tài)框架谋减,只支持 iOS8+的Co...
    Originalee閱讀 15,516評(píng)論 1 36
  • 一.安裝. 1.如果沒(méi)有安裝Homebrew(mac OS X軟件包管理工具)先安裝 終端輸入: /usr/bin...
    篤Boy閱讀 252評(píng)論 0 0
  • 和Cocoapods相比各有利弊吧,具體對(duì)比參見(jiàn):Carthage 初探:四大優(yōu)勢(shì)與四大劣勢(shì) 第一步:如果沒(méi)有安裝...
    黑夜漫步閱讀 1,711評(píng)論 0 1
  • Carthage v0.26.2(原文鏈接) Carthage的目標(biāo)是用最簡(jiǎn)單的方式來(lái)管理Cocoa第三方框架扫沼。 ...
    iOSLee閱讀 3,566評(píng)論 0 7
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理出爹,服務(wù)發(fā)現(xiàn),斷路器缎除,智...
    卡卡羅2017閱讀 134,599評(píng)論 18 139