我們熟知的管理工具有cocoaPods,cocoaPods 是一整套的 包管理方案,在podfile中配置好我們需要的第三方庫,然后cocoapods會進行下載,集成,然后修改我們項目的workspace文件,這一系列操作,
相比之下,carthage非常輕量,它會有一個cartfile描述文件,但是Carthage不會對項目結構進行更改,他的使用只是根據我們的描述文件,對配置的第三方庫進行下載,并且使用xcodebuild命令構建成frameWork文件,然后由我們自己將這些庫集成到項目中,carthage使用的是一種非侵入性的哲學。
但是這樣一來,carthage就沒有cocoaPods的集成操作能力了,開發者必須在carthage下載并構建完第三方庫后,手動的關聯到項目中, 另外,carthage除了非侵入式,他還是去中心化的,它的包管理不像cocoapods那樣,有一個中心的服務器來管理各個包的元信息,(cocoapods中的包,如果我們想要上傳自己寫的庫,還需要配置相應的podspec文件,并且用pod命令push上去由cocoapods團隊進行審核)。不會受中心服務器信息量和穩定性的限制,弊端的話,就是我們想查找第三方庫的時候,也沒有一個中心服務器來幫助我們索引,必須自行從網絡進行查找。
如何使用:首先,我們需要安裝Carthage環境,可以從它的github主頁上找到下載地址:https://github.com/Carthage/Carthage/releases
下載pkg文件,安裝,終端下進入項目根目錄。
Samples是為了測試Carthage而新建的一個項目
cd Samples//
創建Cartfile文件
vim Cartfile
在Cartfile文件中,引入一個第三方庫,例如FBMemoryProfile
github "facebook/FBMemoryProfiler"
然后保存文件后,再次執行命令:
Carthage update
緊接著,Carthage就會開始抓取并使用xcodebuild命令構建第三方庫:
*** Cloning FBMemoryProfiler
*** Cloning FBRetainCycleDetector
*** Cloning FBAllocationTracker
*** Checking out FBAllocationTracker at "0.1"
*** Checking out FBRetainCycleDetector at "0.1"
*** Checking out FBMemoryProfiler at "0.1.3"
*** xcodebuild output can be found in /var/folders/gd/6b_54qt52_72rp8sl623l8h80000gn/T/carthage-xcodebuild.qt6tZB.log
*** Building scheme "FBAllocationTracker" in FBAllocationTracker.xcodeproj
*** Building scheme "FBRetainCycleDetector" in FBRetainCycleDetector.xcodeproj
*** Building scheme "FBMemoryProfiler" in ExampleApp.xcworkspace
update操作完成后,會在項目的根目錄中生成一個Carthage目錄,這個目錄中又包含了兩個目錄,Build和Checkout。Build中存放著構建好的framework包:
Checkouts目錄中存放著對應的源碼文件:
接著打開項目將frameWork引入項目工程,如圖:
接著就可以使用了。如圖:
總的來說,Carthage相比于cocoapods來說,使用起來雖然多了一些手動的步驟,但是更新,引入都是由自己進行控制,能更好的把控,畢竟在cocoapods使用的過程中,有時候去更新,總會莫名其妙的報錯。相比來說,我更喜歡Carthage這種方式。