背景#
之前一直用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
需要注意的是,Carthaget
中有些 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