Carthage是去中心化的第三方包管理工具满俗,和cocoapods有明顯區(qū)別勾效,兩者各有優(yōu)缺點(diǎn)茸苇,須視情況使用。Carthage將第三方包及其依賴(lài)下載并編譯成動(dòng)態(tài)庫(kù)的形式枝笨,僅此而已袁铐,有著靈活,低耦合的特點(diǎn)横浑。cocoapods則在使用上簡(jiǎn)單剔桨,但因?yàn)橹行幕牟僮鞣绞剑枰揽糠?wù)器徙融,服務(wù)器出現(xiàn)問(wèn)題之后沒(méi)法繼續(xù)使用更新洒缀。
1.安裝Homebrew
Macos系統(tǒng)普遍使用Homebrew安裝Carthage。Homebrew時(shí)Macos的軟件包管理工具(當(dāng)然還有其他的欺冀,例如皮皮蝦)树绩,類(lèi)似于linux系統(tǒng)上的yum,apt-get等隐轩,mac上默認(rèn)不安裝Homebrew饺饭,需要先自己手動(dòng)安裝。
Homebrew安裝很簡(jiǎn)單职车,終端輸入如下命令就行:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
注:以上命令如果出錯(cuò)砰奕,可能需要梯子
2.安裝Carthag(打開(kāi)終端蛛芥,輸入如下指令)
1)終端方式:
brew update
brew install carthage
2)pkg方式:
除了使用終端安裝,也可以下載最新版Carthage.pkg來(lái)安裝
3.Carthag使用
1)通過(guò)終端進(jìn)入項(xiàng)目目錄
$ cd /Users/FYTech/Desktop/MyProject
2)創(chuàng)建一個(gè)名為“Cartfile”的文件
$ touch Cartfile
3)使用vim 或者xcode打開(kāi)cartfile文件(使用其他文本編輯器也行)
vim打開(kāi)
$ vim Cartfile
xcode打開(kāi)
$ open -a Xcode Cartfile
4)打開(kāi)后按以下格式添加第三方庫(kù)
github "Alamofire/Alamofire" ~> 3.0
注:
~> 3.0 表示使用版本3.0以上但是低于4.0的最新版本军援,如3.5, 3.9
== 3.0 表示使用3.0版本
= 3.0表示使用3.0或更高的版本
沒(méi)有指明版本號(hào),會(huì)自動(dòng)使用最新的版本
5)保存之后称勋,輸入以下命令胸哥,開(kāi)始開(kāi)始下載并編譯第三方庫(kù)
$ carthage update --platform iOS
執(zhí)行完成之后命令之后,項(xiàng)目目錄會(huì)出現(xiàn)一個(gè)“Carthage”文件夾赡鲜,文件夾下有如下兩個(gè)子文件夾空厌,“Build”文件夾下包含第三方庫(kù)對(duì)應(yīng)的.framwork,Checkouts則包含下載的第三方庫(kù)源文件(如圖)
使用上述命令時(shí),如果不加--platform iOS
银酬,默認(rèn)會(huì)同時(shí)編譯四種平臺(tái)的.framwork(效果如圖):
6)在項(xiàng)目中引入需要的第三方庫(kù)對(duì)應(yīng)的framework文件(需要做一些配置)
引入方式和引入一般的framework方式差不多嘲更,將Build文件夾下對(duì)應(yīng)的frameworkwork拖到對(duì)應(yīng)區(qū)域即可,如圖:
此時(shí)編譯項(xiàng)目揩瞪,會(huì)出現(xiàn)錯(cuò)誤提示赋朦,還需做做一些配置;
1.點(diǎn)擊上圖“+”號(hào)李破,選擇New Run Script Phase
宠哄,效果如下:
2.新版本之后,上圖“1”對(duì)應(yīng)的區(qū)域已經(jīng)不需要再進(jìn)行配置了嗤攻,只需要對(duì)“2”進(jìn)行編輯就行毛嫉。完成之后,編譯項(xiàng)目妇菱,如果出錯(cuò)承粤,可以按照上圖添加“1”試試。
至此闯团,使用Carthage的方法已經(jīng)介紹完成辛臊。
總結(jié):使用Carthage管理第三方庫(kù),因?yàn)橹苯右玫氖?framework文件偷俭,項(xiàng)目中需求變化需要修改第三方庫(kù)時(shí)浪讳,可以通過(guò)以下兩種方式:1)添加對(duì)應(yīng)庫(kù)的Extention 2)項(xiàng)目中直接使用對(duì)應(yīng)庫(kù)的源碼。