Carthage使用

2023-10-16 09:55:56 浏览数 (3)

背景

之前一直用CocoaPods,这次做编译时间优化时,把某些Pod依赖的库改为了Carthage依赖的,这里记录一下Carthage的使用。

使用

安装

使用brew安装,简单方便

代码语言:javascript复制
brew install carthage

使用

在项目所在文件夹,即.xcodeproj所在的文件夹下,创建Cartfile

代码语言:javascript复制
touch Cartfile

然后打开Cartfile

代码语言:javascript复制
open Cartfile -a Xcode

添加要依赖的第三方库,注意依赖版本的指定,指定版本和指定范围的写法,如下:

代码语言:javascript复制

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编译出来的是全部的,可以根据实际需要导入项目中,比如RxSwiftMoya

最后一步,安装,注意下面几个方法的不同

代码语言:javascript复制

# 会编译所有平台的,比如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的也不校验,如下:

代码语言:javascript复制

excluded:
  - Pods
  - Carthage

最后,如果Carchage项目提交后,其他人拉取了这个项目,需要运行下面的命令,来同步carthage frameworks:

代码语言:javascript复制
carthage bootstrap

参考

  • Carthage
  • cannot compile app with carthage dependencies after xcode update

0 人点赞