Carthage安裝和使用

一.Carthage是什么?

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

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

二.如何下載和安裝Carthage?

使用Brew安裝(建議)

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

1

ruby-v

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

1

brew-v

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

2.如果電腦中沒有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,配置依賴管理都是在工程目錄,建立相應(yīng)的配置文件,Carthage的配置文件即 Cartfile文件

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

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

通過終端或者文本編輯器 進(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"

其他可能的源在未來也會(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允許的)

如果沒有版本要求,任何版本的依賴是允許的。

版本好的兼容性是根據(jù)語語義化版本控制決定的。這意味著任何大于或等于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"

安裝依賴 just do it

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

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

1

carthageupdate

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

1

carthageupdate--platformiOS

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

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è)文件是生成后的依賴關(guān)系,不能修改。

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

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

Carthage文件夾用來存放:

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

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

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

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

打開項(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)目中遲遲沒有使用CocoaPods的原因就是,啰里啰嗦...對(duì)原有工程破壞性大(建立workspace,增加一堆亂七八糟的文件),侵入性太強(qiáng),耦合太高,Carthage的出現(xiàn)的確是茉莉花香撲鼻而至!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容