Ios Xcode 8 beta 4:生成失败,出现“错误”;以下二进制文件使用了不兼容的Swift版本:;错误

Ios Xcode 8 beta 4:生成失败,出现“错误”;以下二进制文件使用了不兼容的Swift版本:;错误,ios,iphone,xcode,swift3,xcode8,Ios,Iphone,Xcode,Swift3,Xcode8,使用新的Xcode 8 beta 4时,我们在CopySwiftLibs构建阶段开始遇到以下错误: Effective srcDirs: {( <DVTFilePath:0x7f865961e970:'/Volumes/Data/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphonesimulator'>, <DVTFilePath:

使用新的
Xcode 8 beta 4
时,我们在
CopySwiftLibs
构建阶段开始遇到以下错误:

Effective srcDirs: {(

    <DVTFilePath:0x7f865961e970:'/Volumes/Data/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphonesimulator'>,

    <DVTFilePath:0x7f8657d02b20:'/Volumes/Data/Xcode-beta.app/Contents/Developer/Toolchains/Swift_2.3.xctoolchain/usr/lib/swift/iphonesimulator'>

)}
有效SRCDIR:{(
,
)}
错误:以下二进制文件使用不兼容的Swift版本:

/用户/user/Projects/git/iphone-swift-1/DerivedData/myApp/Build/Products/Debug iphonesimulator/myApp.app/myApp

/Users/user/Projects/git/iphone-swift-1/myApp/myAppApi.framework/myAppApi

myAppApi是工作区中包含一些共享代码的子项目(它使用
Alamofire

需要注意的是:最初我们将项目从Swift 2.2转换为Swift 2.3,然后手动升级到3.0

有人知道是什么导致了这个错误吗


谢谢

您需要将所有依赖项切换到
swift 3
。 在您的情况下,Alamofire需要切换到
Swift 3
branch

我也遇到了同样的问题。 我的解决方案是将“myApp”目录重命名为“myAppmyApp”,然后再次运行该应用程序。一个新的“myApp”-目录被制作成一个新的目录,应用程序在我的iPhone上运行得非常好

与您的情况不同的可能是:我的应用程序的名称,比方说“DerivedData”目录中的“myApp”是myApp与:“-”连接在一起的


也许这会对您有所帮助。

我也遇到了同样的问题,但通过以下方法解决了它:

  • 清理项目
  • 关闭项目并退出Xcode
  • 清除派生数据
  • 再次打开项目,它就在那里,一切都很好,工作正常

  • 我使用Swift 3在Xcode 8上实现了这一点

    我通过迦太基整合了各种图书馆。然而,在这个过程中,我将其中一些转换为CoCoapod,并忘记从项目目标中删除旧的
    .frameworks
    文件


    删除它们解决了生成错误。

    如果您的容器应用程序的代码是Swift 2.3,并且您正在Xcode 8中创建一个新的扩展,您也可能会遇到此问题

    要解决上述情况

    注意:所有代码必须在同一swift(兼容)版本中才能编译而不会失败

    也就是说,解决这个问题的一种方法是坚持使用Swift 2.3,然后将扩展目标的使用传统Swift语言版本设置为“是”

    当Xcode 8打开时,您可以找到该选项,如下所示:

  • 在项目导航器(左侧)中选择应用程序项目根目录
  • 在右侧,选择目标下的分机 部分
  • 选择扩展后,单击构建设置选项卡
  • 向下滚动并查找使用传统Swift语言版本 然后设定它 从下拉菜单中选择“是”
  • 现在可以构建项目了

  • 注意:您可能需要修复扩展模板中被覆盖的代码,因为它们最初在Swift 3中。

    在执行任何操作之前

    (如果您可以使用与您的项目兼容的Xcode 8.0)

    默认情况下,项目设置为Xcode 3.2兼容

    • 在导航器中选择您的应用程序项目(位于左侧)
    • 实用程序面板中选择项目文档(位于 (右侧)
    • 将项目格式更改为兼容Xcode 8.0的项目格式
    尝试构建您的项目

    如果它不起作用,尝试提出的其他解决方案

    注意:在修复错误后,您甚至可以切换回与Xcode 3.2兼容的版本,它应该可以正常工作,但以后您“可能”会遇到其他构建问题

    建议:
    在调试现有项目之前。如果在创建项目时没有创建Git存储库,请关闭项目并压缩项目文件的副本。

    在添加框架的Swift 3版本后,我收到了相同的错误消息

    我的目标
    框架搜索路径
    仍然配置为查找同一框架的swift 2和swift 3版本,因此我的项目在swift 2.3版本上卡住了


    对我来说,解决方案是从我的项目目录中删除旧框架,并从
    框架搜索路径中删除其文件夹引用

    我通过删除项目中嵌入的二进制文件修复了这个问题。为此:

  • 在Xcode中打开您的工作区/项目
  • 导航到实际的项目文件(使用“常规”、“功能”等功能区)
  • 转到General>Embedded Binary,通过选择不需要的二进制文件,然后单击减号来删除
  • 注1:您不必从“链接的框架和库”部分删除它们(当您从“嵌入式二进制文件”中删除它们时,它们应该自动删除)


    注2:我有很多依赖项,正在使用CoCoapod。“嵌入式二进制文件”中没有任何内容,只有“链接的框架和库”部分中的“Pods_u0;[YourApplicationName].framework”部分。

    因此,我只发布了一个小时调试后找到的解决方案

    自Xcode 9以来,这可以通过编译器日志进行跟踪

    如果向下滚动到编译器日志的底部,您将发现此问题是由类型检查崩溃引起的


    在将Xcode更新到9.3之后,我遇到了同样的问题。我只需清理build文件夹就解决了这个问题。您可以使用Command-Option-Shift-K或在选项菜单“产品”->“清洁”中执行此操作(请参见屏幕截图)


    升级到Xcode 10.2后,这个弹出窗口刚刚出现。。。我的一个吊舱使用Swift。 解决方案是:

    pod repo update
    rm -rf Pods
    pod install
    

    二进制文件是为较旧版本的swift构建的,即
    swift 2.2
    。它与
    Swift 2.3
    Swift 3
    不兼容。应使用usi对其进行更改和编译