今是昨非

今是昨非

日出江花红胜火,春来江水绿如蓝

Carthage使用

背景#

之前一直用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 編譯出來的是全部的,可以根據實際需要導入專案中,比如RxSwiftMoya

最後一步,安裝,注意下面幾個方法的不同


# 會編譯所有平台的,比如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

參考#

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。