迦太基建造失败

SRM*_*RMR 6 xcode realm ios swift carthage

我运行carthage bootstrap --platform iOS并得到"Skipped安装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 failure)".

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

Orl*_*ndo 18

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能够在本地缓存上存储您构建的依赖项(并在重新需要时使用它),因此即使您再次执行该命令,它也只会复制您存储的框架并避免再次构建.


Abh*_*man 5

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

sudo xcode-select --switch /Applications/Xcode.app
Run Code Online (Sandbox Code Playgroud)