天天看點

CarthageCocoa 新的依賴管理工具:Carthage

CarthageCocoa 新的依賴管理工具:Carthage

我之前很少用 CocoaPods,很大一部分原因就是因為麻煩,僅個人感覺,需要牽扯 XCode 項目檔案;而 Carthage 就很好的解決了我之前的煩惱,輕耦合,更靈活;使用 <code>xcodebuild</code> 工具來編譯依賴項目成二進制 Framework,再引入到項目中去。

Carthage 是由 Swift 語言寫的,隻支援動态架構,隻支援 iOS8+。

Carthage 的大緻工作流程如下:

建立一個 <code>Cartfile</code> 檔案,寫好你要哪些依賴庫

執行 <code>carthage update</code> 指令拉取源代碼并編譯為 Framework

把編譯後的 <code>.framework</code> 拖到項目中去即可 (官方是這麼說的,不過更好的辦法是把 Carthage 編譯的 Framework 路徑加入到 Build Setting 中的 Framework Search Path,詳情見後文)

執行 <code>update</code> 指令後,你的項目目錄結構大緻如下:

Cartfile 檔案用來标注你需要哪些依賴庫,對應版本或者 Git 分支 (需要送出到 Git)

Cartfile.resolved 檔案用來跟蹤項目目前所用的依賴版本号,為了保持多端開發一緻 (需要送出到 Git)

Carthage 檔案夾用來存放依賴庫的源檔案和編譯後的檔案 (不需要送出到 Git)

其實工作方式有點和 Cocoapods 大緻相似,隻不過 Cartfile 多了一個自動編譯過程且與 Project 耦合更低,Cartfile 利用 xcode-select 指令來編譯 Framework,如果你想用測試版的 Xcode 進行編譯,執行下面這條指令,把 xcode-select 的路徑改為另一版本 Xcode 就可以了

其中 <code>Xcode-beta.app</code> 就是對應你的 Xcode 版本,你也可以改成其他版本的 Xcode

注:寫完才發現,原來 Xcode -&gt; Preferences -&gt; Locations 中已經有切換 Command Line Tools 版本的選項...

安裝前最好先 update 一下,之前我就是因為沒有 update,結果安裝了老版本的 Carthage

暫隻支援 GitHub 和 git 源,在執行 <code>carthage update</code> 指令後會在根目錄建立一個 <code>Cartfile.resolved</code> 檔案,這個檔案是生成後的依賴關系,不能修改。

在項目中引入依賴的 Framkework,隻需要在對應 Target 中的 Build Setting 中的 Framework Search Path 項加入以下路徑,Xcode 便會自動搜尋目錄下的 Framework:

如果是 OSX 項目則把末尾的 iOS 改為 Mac

如果不想把 Carthage 的依賴庫 push 到 Git 倉庫裡,則修改 .gitignore 檔案,增加忽略 Carthage 檔案夾就行了:

#Carthage Carthage
<code>archive</code> : Archives a built framework into a zip that Carthage can use <code>bootstrap</code> : Check out and build the project's dependencies <code>build</code> : Build the project's dependencies <code>checkout</code> : Check out the project's dependencies <code>copy-frameworks</code> : In a Run Script build phase, copies each framework specified by a SCRIPT_INPUT_FILE environment variable into the built app bundle <code>fetch</code> : Clones or fetches a Git repository ahead of time <code>help</code> : Display general or command-specific help <code>update</code> : Update and rebuild the project's dependencies <code>version</code> : Display the current version of Carthage

本文轉自 h2appy  51CTO部落格,原文連結:http://blog.51cto.com/h2appy/1872670,如需轉載請自行聯系原作者