将 swift 更新到 4.0 版后 Carthage Build 失败

Posted

技术标签:

【中文标题】将 swift 更新到 4.0 版后 Carthage Build 失败【英文标题】:Carthage Build Failed after updating swift to version 4.0 【发布时间】:2017-09-22 10:38:37 【问题描述】:

在将 swift 从 3.2 版更新到 4.0 版后,Carthage 构建失败。 以下是使用carthage update --platform ios 的结果。

*** Fetching AlamofireImage
*** Fetching FSCalendar
*** Fetching Alamofire
*** Fetching ActiveLabel.swift
*** Fetching Toaster
*** Fetching PopupDialog
*** Fetching DKImagePickerController
*** Checking out DKImagePickerController at "3.6.1"
*** Checking out PopupDialog at "0.5.4"
*** Checking out Toaster at "2.1.0"
*** Checking out ActiveLabel.swift at "0.8.0"
*** Checking out Alamofire at "4.5.1"
*** Checking out FSCalendar at "2.7.9"
*** Checking out AlamofireImage at "3.3.0"
*** xcodebuild output can be found in /var/folders/6z/c0myz1fn4rsgy842p9vqqr700000gn/T/carthage-xcodebuild.my2Am1.log
*** Building scheme "ActiveLabel" in ActiveLabel.xcodeproj
Build Failed
    Task failed with exit code 65:
    /usr/bin/xcrun xcodebuild -project /Users/poqw/Documents/GitHub/nyg-ios/Carthage/Checkouts/ActiveLabel.swift/ActiveLabel.xcodeproj -scheme ActiveLabel -configuration Release -derivedDataPath /Users/poqw/Library/Caches/org.carthage.CarthageKit/DerivedData/9.0_9A235/ActiveLabel.swift/0.8.0 -sdk iphoneos ONLY_ACTIVE_ARCH=NO BITCODE_GENERATION_MODE=bitcode CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY= CARTHAGE=YES build (launched in /Users/poqw/Documents/GitHub/nyg-ios/Carthage/Checkouts/ActiveLabel.swift)

This usually indicates that project itself failed to compile. Please check the xcodebuild log for more details: /var/folders/6z/c0myz1fn4rsgy842p9vqqr700000gn/T/carthage-xcodebuild.my2Am1.log

然后$ tail /var/folders/6z/c0myz1fn4rsgy842p9vqqr700000gn/T/carthage-xcodebuild.my2Am1.log

我明白了:

    export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:~/.local/bin:/usr/local/bin:/Users/poqw/miniconda3/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/Wireshark.app/Contents/MacOS:/opt/local/bin"
    /usr/bin/ditto -rsrc /Users/poqw/Library/Caches/org.carthage.CarthageKit/DerivedData/9.0_9A235/ActiveLabel.swift/0.8.0/Build/Intermediates.noindex/ActiveLabel.build/Release-iphoneos/ActiveLabel.build/Objects-normal/armv7/ActiveLabel.swiftdoc /Users/poqw/Library/Caches/org.carthage.CarthageKit/DerivedData/9.0_9A235/ActiveLabel.swift/0.8.0/Build/Products/Release-iphoneos/ActiveLabel.framework/Modules/ActiveLabel.swiftmodule/arm.swiftdoc

** BUILD FAILED **


The following build commands failed:
    CompileC /Users/poqw/Library/Caches/org.carthage.CarthageKit/DerivedData/9.0_9A235/ActiveLabel.swift/0.8.0/Build/Intermediates.noindex/ActiveLabel.build/Release-iphoneos/ActiveLabel.build/Objects-normal/armv7/ActiveLabel_vers.o /Users/poqw/Library/Caches/org.carthage.CarthageKit/DerivedData/9.0_9A235/ActiveLabel.swift/0.8.0/Build/Intermediates.noindex/ActiveLabel.build/Release-iphoneos/ActiveLabel.build/DerivedSources/ActiveLabel_vers.c normal armv7 c com.apple.compilers.llvm.clang.1_0.compiler
    CompileC /Users/poqw/Library/Caches/org.carthage.CarthageKit/DerivedData/9.0_9A235/ActiveLabel.swift/0.8.0/Build/Intermediates.noindex/ActiveLabel.build/Release-iphoneos/ActiveLabel.build/Objects-normal/arm64/ActiveLabel_vers.o /Users/poqw/Library/Caches/org.carthage.CarthageKit/DerivedData/9.0_9A235/ActiveLabel.swift/0.8.0/Build/Intermediates.noindex/ActiveLabel.build/Release-iphoneos/ActiveLabel.build/DerivedSources/ActiveLabel_vers.c normal arm64 c com.apple.compilers.llvm.clang.1_0.compiler
(2 failures)

这是我为解决此问题所做的工作。

删除派生的迦太基缓存。 删除项目中的 Carthage 目录。 卸载 Carthage 并重新安装。 下载 Xcode 8.3.2 和 xcode-select --switch /Applications/Xcode8.app/Contents/Developer 并使用 xcrun 命令确保版本已更改为 swift 3.0,然后更新 Carthage。 清理项目并重建 重启 Xcode

如果有人可以帮助我,我将不胜感激。

【问题讨论】:

【参考方案1】:

我使用的是 Xcode 8.3.1,这就是我所遵循的:

Deleted derived data.
Removed Carthage folder: rm -r ./Carthage
Updated Cartfile with:
  github "facebook/facebook-sdk-swift" "master"
  github "facebook/facebook-ios-sdk" "sdk-version-4.21.0"

运行迦太基命令:

carthage update --platform iOS --no-use-binaries

【讨论】:

感谢您回答这个问题。但是您建议的解决方案是我已经做过的事情。而且它似乎仍然没有解决:( 我遇到了很多问题,奇怪的是,我发现重置我的 Mac 有很大的不同。 谢谢。但最后我没有以任何方式解决它。所以我格式化了我的macbook,现在它运行良好。 欢迎。我又遇到了这个问题,我发现做一个清洁,首先对模拟器有帮助。 似乎删除派生数据就足够了。至少对我来说。谢谢。【参考方案2】:

Mac Senour 的解决方案对我不起作用;有效的是在这里清理 CarthageKit 的派生数据:/Library/Caches/org.carthage.CarthageKit/DerivedData/

【讨论】:

以上是关于将 swift 更新到 4.0 版后 Carthage Build 失败的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xcode 9.3 中切换到 Swift 4.0?

Android Studio 更新 0.4.0 找不到 buildConfig()

Xcode 9:使用 Swift 3.1 编译的模块无法在 Swift 4.0 中导入

Big Sur 更新 11.3 版后 MacBook Pro 错误 Xampp 不起作用

无法调用非函数类型“HTTPURLResponse?”的值- 阿拉莫菲尔 4.0

Swift 3.0 迁移后的 Alamofire 错误:“调用中的额外参数”(请求方法)