2017-10-19 63 views
0

我跑了carthage bootstrap --platform iOS并得到了“跳过安装realm-cocoa.framework二进制由于错误:不兼容的Swift版本 - 框架与3.1和本地版本为4.0”构建,然后在构建结束我得到了一个完整的“构建失败:任务失败,退出代码为65”错误。迦太基构建失败

这点我到derivedDataPath,我检查了xcodebuild联编日志以了解更多详细信息,它让我知道“PhaseScriptExecution下载\核心\和\同步/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 failure )”。

但我仍然不完全确定Realm Cocoa究竟发生了什么,或者如何解决,你知道吗?

+1

您可能会尝试再次运行您的carthage命令并添加开关 - 无使用二进制文件。 (这是前两个破折号。)这对我处理Swift 3.x之间的兼容性问题,虽然我还没有尝试过4.0。 –

+0

迈克是对的。执行'carthage bootstrap --platform iOS --no-use-binaries',你还应该检查你的Swift版本在命令行上是否等于Xcode包含的版本,以防万一你安装了多个Xcode版本。这是'swift --version',它应该返回4.0。一旦你确保版本运行迦太基命令,你就完成了。 – Orlando

+0

@MikeTaverne我已经尝试过,当我遇到问题时,它大部分都能正常工作。我不确定问题是否更深,我需要修补一些额外的未来问题 – SRMR

回答

2

TL; DR:确保您正在使用最新版本迅速,包括在Xcode 9,然后执行carthage bootstrap --no-use-binaries --platform iOS --cache-builds

龙版本:

同时建立你在Xcode中得到了错误您的项目​​是由于Carthage为了获得Realm Framework的预构建版本而进行的下载。

但是,此预构建版本是使用以前版本的Swift编译的(在这种情况下,错误指向的是v3.1)。此案例的解决方案将使用不同的命令执行依赖性安装:

carthage bootstrap --platform iOS --no-use-binaries

这将依赖关系建立成功的项目。无论如何,这可能需要很长时间,因为每次执行命令时都会从头开始构建Realm.framework和RealmSwift.framework。因此,可以在迦太基上包含一个用于构建的缓存。该依赖性可以用

carthage bootstrap --no-use-binaries --platform iOS --cache-builds

安装使用此选项将迦太基:

  • 引导,所以在Cartfile.resolved的版本将被使用,没有更新。
  • --no-use-binaries没有预建框架的下载建立依赖关系(避免3.1版本不兼容。)
  • --platform iOS将建立依赖关系只能在iOS中使用,避免情况下,有关Apple TV或Mac OS构建框架依赖关系支持它。这会削减很多时间!
  • --cache-builds将使迦太基能够在本地缓存中存储您的构建的依赖关系(并在需要时使用它),因此即使您再次执行该命令,它也只会复制存储的框架并避免再次构建。