我运行了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到底发生了什么,或者如何修复,你知道吗?
答案 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会:
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