背景#
之前一直用CocoaPods
,這次做編譯時間優化時,把某些 Pod 依賴的庫改為了Carthage
依賴的,這裡記錄一下Carthage
的使用。
使用#
安裝#
使用brew
安裝,簡單方便
brew install carthage
使用#
在專案所在的資料夾,即.xcodeproj 所在的資料夾下,創建Cartfile
touch Cartfile
然後打開 Cartfile
open Cartfile -a Xcode
添加要依賴的第三方庫,注意依賴版本的指定,指定版本和指定範圍的寫法,如下:
github "krzyzanowskim/CryptoSwift" ~> 1.4.0
github "evgenyneu/keychain-swift" ~> 19.0
github "ibireme/YYKit"
github "ReactiveX/RxSwift" "6.5.0"
github "onevcat/Kingfisher" "version6-xcode13"
github "alibaba/HandyJSON" ~> 5.0.2
github "https://github.com/antitypical/Result.git"
github "pkluz/PKHUD" ~> 5.0
github "Moya/Moya" ~> 15.0
需要注意的是,Carthage
中有些 SDK 編譯出來的是全部的,可以根據實際需要導入專案中,比如RxSwift
和Moya
。
最後一步,安裝,注意下面幾個方法的不同
# 會編譯所有平台的,比如tvOS、iOS、macOS等
carthage update --use-xcframeworks
# 只編譯iOS的庫
Carthage update --platform ios --use-xcframeworks
# 只編譯iOS的庫,且如果編譯的快取存在的話,不重複編譯
Carthage update --platform ios --use-xcframeworks --cache-builds
# 參考https://stackoverflow.com/questions/41442601/whats-the-purpose-of-no-use-binaries-in-carthage
carthage build --platform ios --use-xcframeworks --no-use-binaries
編譯後生成的xcframework
,導入到專案中,在專案 General 下的Frameworks, Libraries, and Embeded Content
中需要切換勾選Embeded & Sign
,如下:
如果使用了SwiftLint
,編譯後可能報錯,在.swiftlint.yml
中添加Carthage
的也不校驗,如下:
excluded:
- Pods
- Carthage
最後,如果 Carchage 專案提交後,其他人拉取了這個專案,需要運行下面的命令,來同步 carthage frameworks:
carthage bootstrap