Carthage安裝和使用

一.Carthage是什么?

Carthage 使用于 Swift 語言編寫,只支持動態框架,只支持 iOS8+的Cocoa依賴管理工具。

與現在流行的 CocoaPods 不同,Carthage編譯你的依賴,并提供框架的二進制.framework文件,但你仍然保留對項目的結構和設置的完整控制,Carthage不會自動的修改你的項目文件或編譯設置。是一個去中心化的Cocoa依賴管理工具

二.如何下載和安裝Carthage?

使用Brew安裝(建議)

1.安裝Mac OSX流行的的軟件包管理工具Homebrew之前要檢查Mac中是否有Ruby環境,目前的版本基本都內置了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) 說明已經安裝brew不需要再次安裝

2.如果電腦中沒有Homebrew,終端執行腳本安裝即可

1

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

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

1

brewupdate

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

4.假如你在本地已經安裝好Homebrew環境,那么下載和安裝carthage將十分簡單,只需要一行命令。

1

brewinstallcarthage

PKG文件安裝

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

三.如何使用Carthage?

包管理工具,不管是CocoaPods,還是Node 的NPM,配置依賴管理都是在工程目錄,建立相應的配置文件,Carthage的配置文件即 Cartfile文件

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

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

通過終端或者文本編輯器 進入到項目所在的文件夾建立一個 空的Cartfile文件

現在只支持GitHub庫(GitHub.com和GitHub企業),指定GitHub的關鍵字:

1

2github"ReactiveCocoa/ReactiveCocoa"# GitHub.com

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

或者是其他git源,指定git關鍵詞:

1

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

其他可能的源在未來也會會被添加

版本指定

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"指定一個 Git 對象 (任何被git rev-parse允許的)

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

版本好的兼容性是根據語語義化版本控制決定的。這意味著任何大于或等于1.5.1版本,但小于2.0,將認為與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??使用一個企業項目,在 "development" 分支

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

# Use a project from any arbitrary server, on the "development" branch??使用一個私有項目,在 "development" 分支

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

# Use a local project?? 使用一個本地的項目

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

安裝依賴 just do it

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

內部工作流程即? carthage update => carthage checkout => checkout build

1

carthageupdate

只編譯iOS平臺的類庫

1

carthageupdate--platformiOS

結果如下,(PS我只留了一個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)

在執行 carthage update 命令后會在根目錄創建一個 Cartfile.resolved 文件,這個文件是生成后的依賴關系,不能修改。

Cartfile.resolved 文件確保提交的項目可以使用完全相同的配置與方式運行啟用。 跟蹤項目當前所用的依賴版本號,保持多端開發一致,出于這個原因,強烈建議提交這個文件到版本控制中。

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

Carthage文件夾用來存放:

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

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

引入 .Framework 動態庫的方法

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

打開項目,點擊project,選擇target, 再選擇上方的General,將需要的framework文件拖到 Embedded? Binaries(動態庫)內

注意:動態庫拷貝到Embedded? Binarie會同時自動加入到Linked Frameworks and Libraries,但是錯誤的拖入到Linked Frameworks and Libraries是不會自動增加到Embedded? Binarie中的,會導致動態庫加載失敗

2.在對應 Target 中的 Build Setting 中的 Framework Search Path 項加入以下路徑,Xcode 便會自動搜索目錄下的 Framework:

1

$(PROJECT_DIR)/Carthage/Build/iOS

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

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

#Carthage

Carthage

五.總結

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Carthage是什么? Carthage 使用于 Swift 語言編寫,只支持動態框架,只支持 iOS8+的Co...
    Originalee閱讀 15,744評論 1 36
  • 一.安裝. 1.如果沒有安裝Homebrew(mac OS X軟件包管理工具)先安裝 終端輸入: /usr/bin...
    篤Boy閱讀 268評論 0 0
  • 和Cocoapods相比各有利弊吧,具體對比參見:Carthage 初探:四大優勢與四大劣勢 第一步:如果沒有安裝...
    黑夜漫步閱讀 1,777評論 0 1
  • Carthage v0.26.2(原文鏈接) Carthage的目標是用最簡單的方式來管理Cocoa第三方框架。 ...
    iOSLee閱讀 3,654評論 0 7
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,915評論 18 139