4

我正在将基于 Alamofire 的“NetworkFoundation”框架迁移到 Swift 5。Carthage 被用作依赖管理器,

购物车文件如下所示:

github "Alamofire/Alamofire" "5.0.0-beta.5"

该命令carthage update执行成功。在 Xcode 中,项目构建,但是当我carthage build --no-skip-current在框架的根目录中运行命令时,它失败了:

xcodebuild 输出可以在 /var/folders/1m/qjb4gks13d54rqmn9ptwjmmw0000gp/T/carthage-xcodebuild.bg5VCR.log 中找到

Alamofire.xcworkspace 中的构建方案“Alamofire macOS”

Alamofire.xcworkspace 中的构建方案“Alamofire tvOS”

在 Alamofire.xcworkspace 中构建方案“Alamofire watchOS”

在 Alamofire.xcworkspace 中构建方案“Alamofire iOS”

MyNetworkFoundation.xcodeproj 中的构建方案“MyNetworkFoundation”

在 Alamofire.xcworkspace 中构建方案“Alamofire iOS”

构建失败

任务失败,退出代码 65:

/usr/bin/xcrun xcodebuild -workspace /Users/MyUser/Documents/Projects/MyNetworkFoundation/MyNetworkFoundation/Carthage/Checkouts/Alamofire/Alamofire.xcworkspace -scheme Alamofire\ iOS -configuration Release -sdk iphoneos ONLY_ACTIVE_ARCH=NO CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY= CARTHAGE=YES archive -archivePath /var/folders/1m/qjb4gks13d54rqmn9ptwjmmw0000gp/T/MyNetworkFoundation SKIP_INSTALL=YES GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=NO CLANG_ENABLE_CODE_COVERAGE=NO STRIP_INSTALLED_PRODUCT=NO(在 /Users/MyUser/Documents/Projects/MyNetworkFoundation 启动)

这通常表明项目本身无法编译。请查看 xcodebuild 日志以获取更多详细信息:/var/folders/1m/qjb4gks13d54rqmn9ptwjmmw0000gp/T/carthage-xcodebuild.bg5VCR.log

按照建议,我检查了失败构建的日志文件。里面写着:

error: SWIFT_VERSION '3.0' is unsupported, supported versions are: 4.0, 4.2, 5.0. (in target 'Alamofire iOS') ** ARCHIVE FAILED **

所以我检查了我的项目的 Swift 版本,这似乎是正确的。 MyNetworkFoundation 构建设置

因为日志文件指出目标“Alamofire iOS”中使用了 Swift 3.0 版,所以我检查了目标

/MyNetworkFoundation/Carthage/Checkouts/Alamofire/Alamofire.xcodeproj

但他们都有 Swift 版本 5。我不知道当我想构建我的项目时为什么会出现这个错误。我什至尝试重新安装 Xcode,但也没有用。有人知道我错过了什么吗?

Xcode 版本:10.2.1 (10E1001) MacOS 版本:10.14.5 (18F132)

4

1 回答 1

0

不确定这是否会为您解决问题,但我遇到了类似的情况。对我来说,因为我刚刚复制了一个我正在加入的项目的 repo,所以我正在运行carthage bootstrap,但 Alamofire 总是失败,出现像你这样的 Swift 3 错误。

我的 Cartfile 文件有github "Alamofire/Alamofire" ~> 4.7.2,并且我的项目使用的是 Swift 4.2(同样,与您的设置不完全相同)。

我终于让它运行以下命令:

carthage bootstrap --platform iOS --no-use-binaries --toolchain com.apple.dt.toolchain.Swift_4_2

我相信诀窍是指定工具链使用 Swift 4.2,所以我建议你尝试使用 Swift_5_0。希望这可以帮助!

于 2019-08-08T00:58:54.523 回答