Carthage是一個致力于通過一種簡單的方式,來管理我們應(yīng)用的庫的工具。相較于CocoaPods,更輕量級、更容易上手。
使用CocoaPods的童靴一定遇到過這樣的問題,pod install or update一次以后,漫長的編譯就開始了。隨著項(xiàng)目組件化的開展,引入的pod越來越多這個編譯過程也隨之越來越長。有沒有辦法能夠適當(dāng)?shù)臏p少這一個過程?
項(xiàng)目升級到iOS8以后,Carthage的好處就呼之欲出。
先來看看Carthage如何使用?
簡單使用
- 新建一個Cartfile,列出你需要引用的framework。
- 運(yùn)行Carthage,根據(jù)Cartfile,編譯每一個庫。
- 將第二步產(chǎn)生的
.framework
拽到你的工程中。
從使用步驟可以看出,Carthage的作用主要是生成
.framework
,依賴還是要我們自己來處理。
為什么要使用Carthage?
- 通過Carthage可以將一部分不常變的庫打包成framework,再引如到主工程,這樣可以減少開發(fā)過程中的編譯時間。
- 可以將一些編譯時間很長的庫打包成framework。
- 國內(nèi)防火墻的緣故,有些庫的下載慢到一定境界,這個時候,使用Carthage就是福音了。
- 同時可以優(yōu)化CI的編譯、打包時間。
Carthage還有一個好處就是,可以與Cocoapods無縫對接。兩者可以同時使用。
當(dāng)然也有一些不那么友好的地方如:
- 需要手動引用庫
- 一些第三方庫還不支持Carthage
- 引入的庫只能看到頭文件,無法查看源碼等。
說了這么多,再來說說,具體怎么用?
安裝
直接通過brew進(jìn)行安裝。
brew update
brew install carthage
使用
- 新建
Cartfile
,引入需要安裝的庫。
/* ~>的使用與CocoaPods相同 */
/* 3.2.0為對應(yīng)的tag */
github "SnapKit/SnapKit" ~> 3.2.0
/* 通過url直接引用 */
github "https://******/test.git"
-
carthage update
根據(jù)Cartfile
拉取代碼,并Build成對應(yīng)的.framework
。
01.png
在主工程目錄下,會生成一個Carthage文件夾,里面有兩個子文件夾
|- Build 存放所有編譯完成的.framework文件
|- Checkouts 存放源碼
通過
--platform ios
指定對應(yīng)平臺的framework,可以減少無畏的編譯時間,默認(rèn)是全平臺編譯。carthage update --platform ios
-
將Build中生成的庫拽入主工程中
02.png
-
添加運(yùn)行腳本,
/usr/local/bin/carthage copy-framewrks
,并未每一個拽入主工程的framework添加一個Input Files
和一個Output Files
(ps: 圖最下一個紅框)
03.png -
添加Search Path
04.png
以上,Build你的工程,可以享受Carthage給你帶來的快感了。
制作自己的Carthage庫
用過CocoaPods私有庫的同志一定會問,我們該怎么制作支持Carthage的庫呢?
簡單到難以置信
-
新建一個動態(tài)庫
05.png -
勾選schemes中,對應(yīng)scheme的shared
06.png - 引用
github "your git url"
是的,只要三步。
引用
CarthagePods —— 一個整合 CocoaPods 和 Carthage 一起使用的工具
I have a pod, I have a carthage, En...