【发布时间】:2018-03-31 19:12:46
【问题描述】:
我运行 carthage bootstrap --platform iOS 并得到“由于错误而跳过安装 realm-cocoa.framework 二进制文件:不兼容的 Swift 版本 - 框架是用 3.1 构建的,本地版本是 4.0”,然后在构建结束时我“构建失败:任务失败,退出代码为 65” 错误。
它指向derivedDataPath,我检查了 xcodebuild 日志以获取更多详细信息,它让我知道 "PhaseScriptExecution Download\ Core\ and\ Sync /Users/user/Libary/Caches/org.carthage .CarthageKit/DerivedData/9.0_9A###/realm-cocoa/v2.10.2/Build/Intermediates.noindex/Realm.build/Release-iphoneos/Realm.build/Script-X#X#X#X#X.sh (1 次失败)”。
但我仍然不能完全确定 Realm Cocoa 到底发生了什么,或者如何解决,你知道吗?
【问题讨论】:
-
您可以尝试再次运行 carthage 命令并添加开关 --no-use-binaries。 (前面有两个破折号。)在处理 Swift 3.x 风格之间的兼容性问题时,这对我很有用,尽管我没有尝试过 4.0。
-
迈克是对的。执行
carthage bootstrap --platform iOS --no-use-binaries,您还应该在命令行中检查您的 Swift 版本是否与 Xcode 上包含的版本相同,以防万一您安装了多个 Xcode 版本。那是swift --version,它应该返回 4.0。一旦你确保版本运行 Carthage 命令,你就完成了。 -
@MikeTaverne 我已经尝试过了,当我遇到问题时它大部分都可以工作。我不确定问题是否更深,我需要为将来的问题修复一些额外的东西
-
@SRMR 好吧,您使用
--no-use-binaries标志是因为第三方(可能是Realm 本身?)构建的Realm 框架有缓存,因此开发人员不会构建框架并浪费时间.无论如何,该框架是使用以前版本的 Swift 构建的,因此存在不兼容问题。如果您自己构建框架,则不会有更多问题。还要检查 Carthage 的--cache-builds标志,它可以帮助您在每次依赖项时不重新构建。干杯! -
@Orlando 关于 --cache-builds 标志的很棒的信息!我假设如果我在一切都在正确的框架版本上使用该命令,那么一切都会很好,直到将来有一个新版本的 Xcode/Swift 方式我将开始再次收到“不兼容版本”警告,此时最好使用
carthage build以便重建框架?
标签: ios swift xcode realm carthage