迦太基建造失败

时间:2017-10-19 16:57:25

标签: ios swift xcode realm carthage

我运行了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 ### /境界可可/ v2.10.2 /编译/ Intermediates.noindex / Realm.build /释放-的iPhoneOS / Realm.build / SCRIPT-X#X#X#X#X .sh(1次失败)“。

但我仍然不完全确定Realm Cocoa到底发生了什么,或者如何修复,你知道吗?

2 个答案:

答案 0 :(得分:12)

TL; DR:确保您使用的是Xcode 9附带的最新swift版本,然后执行carthage bootstrap --no-use-binaries --platform iOS --cache-builds

长版:

您在构建项目时从Xcode获得的错误Incompatible Swift version - framework was built with 3.1 and the local version is 4.0,是由Carthage下载以获取Realm Framework的预构建版本。

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

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

这将有助于项目依赖项构建成功。无论如何,这可能需要很长时间,因为每次执行命令时它都会从头开始构建来自内核的Realm.framework和RealmSwift.framework。因此可以在Carthage上包含构建的缓存。可以使用

安装依赖项

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

有了这个选项,Carthage会:

  • bootstrap,因此将使用Cartfile.resolved中的版本,无需更新。
  • --no-use-binaries构建依赖项,不下载预构建的框架(避免3.1版本不兼容。)
  • --platform iOS将构建仅在iOS上使用的依赖项,避免在依赖项支持的情况下为Apple TV或Mac OS构建框架。这将减少很多时间!
  • --cache-builds将允许Carthage在本地缓存上存储您构建的依赖项(并在重新需要时使用它),因此即使您再次执行该命令,它也只会复制您存储的框架并避免再次构建。

答案 1 :(得分:2)

检查您的应用程序文件夹,并使用swift 3将Xcode版本切换到旧版本。

sudo xcode-select --switch /Applications/Xcode.app