Ios Swift支持无效-文件不’;不匹配

Ios Swift支持无效-文件不’;不匹配,ios,xcode,swift,Ios,Xcode,Swift,我刚刚在Swift 2中重新编写了一个应用程序。我正在尝试将应用程序上传到iTunesConnect(通过Xcode 7 GM)进行内部测试 我与一个“无效的Swift支持”错误搏斗了一段时间()。。。但现在它变成了一个有点不同的东西 苹果现在的错误是: 无效的Swift支持 文件libswiftCoreLocation.dylib、libswiftCoreMedia.dylib、libswiftCoreData.dylib、libswiftAVFoundation.dylib不匹配 /Payl

我刚刚在Swift 2中重新编写了一个应用程序。我正在尝试将应用程序上传到iTunesConnect(通过Xcode 7 GM)进行内部测试

我与一个“无效的Swift支持”错误搏斗了一段时间()。。。但现在它变成了一个有点不同的东西

苹果现在的错误是:

无效的Swift支持

文件libswiftCoreLocation.dylib、libswiftCoreMedia.dylib、libswiftCoreData.dylib、libswiftAVFoundation.dylib不匹配

/Payload/App.App/Frameworks/libswiftCoreLocation.dylib、/Payload/App.App/Frameworks/libswiftCoreMedia.dylib、/Payload/App.App/Frameworks/libswitvfoundation.dylib、/Payload/App.App/Frameworks/libswitvfoundation.dylib

确保文件正确(?),重建应用程序,然后重新提交

不要将后处理应用于

/Payload/App.App/Frameworks/libswiftCoreLocation.dylib、/Payload/App.App/Frameworks/libswiftCoreMedia.dylib、/Payload/App.App/Frameworks/libswitvfoundation.dylib、/Payload/App.App/Frameworks/libswitvfoundation.dylib

通过搜索“不应用后期处理”、“确保文件正确、重建应用程序并重新提交”等,我无法找到类似的错误


有人知道我如何“确保文件正确”——或者——有其他建议吗?谢谢。

我在集成不支持位代码的库(例如当前稳定版本的New Relic)时看到过此错误。解决方案是删除库、禁用位代码(并且可能无法提交到存储),或者等待库供应商提供支持位代码的更新二进制文件。

这里也有同样的问题。我认为这很可能是开发人员工具的一个bug,与位代码有关

我刚刚找到了解决办法

  • 使用新版本号存档您的应用程序:(
  • 从组织者“在Finder中显示”在Finder中查找存档(.xcarchive文件)
  • 打开软件包并查找目录,如
    Products/Applications/YourApp.ipa/Frameworks/
    SwiftSupport/iphoneos/
  • SwiftSupport/iphoneos/
    中的所有
    libswitxxx.dylib
    文件复制到
    Products/Applications/YourApp.ipa/Frameworks/
    并覆盖
  • 现在,从组织者上传到应用商店
  • 通过这个过程,我成功地上传了我的构建。现在我正在等待审核

    注:


    我正在使用CocoaPods,而启用比特码选项是否。

    有一个稍微不复杂的解决方案,可以在以下位置找到:

    我在Pods-frameworks.sh中查看了一下,发现了一个部分 评论如下:

    嵌入链接的Swift运行库
    注释复制这些库的代码块(并对它们进行代码签名)似乎 已经解决了我的提交难题。我还没有深入研究是否 这只是复制它们造成的问题,或者如果它是 代码签名,我有点不懂

    我的解决方案是:

    我正在通过Cocoapods使用Reveal,并且Reveal需要禁用位代码。因此,我只在调试时包含Reveal(应适用于任何其他框架):

    pod 'Reveal-iOS-SDK', :configurations => ['Debug']
    
    由于我的启示现在只配置为调试,我禁用位代码只用于调试

    使用此设置,一切正常,没有任何黑客攻击…

    编辑:已发布,修复了此问题!

    正如所说,在
    Pod frameworks.sh
    中注释了一些代码。我在这里包含了更多的细节

    在Xcode项目目录中,打开
    Pods/Target Support Files/Pods/Pods frameworks.sh

    注释掉以下几行:

    # Embed linked Swift runtime libraries
    local basename
    basename="$(basename "$1" | sed -E s/\\..+// && exit ${PIPESTATUS[0]})"
    local swift_runtime_libs
    swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/${basename}.framework/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u  && exit ${PIPESTATUS[0]})
    for lib in $swift_runtime_libs; do
      echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
      rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
      code_sign_if_enabled "${destination}/${lib}"
    done
    
    =>


    保存
    Pods frameworks.sh
    ,您就可以开始了!

    此问题的修复程序已合并,可在最新的CocoaPods版本
    0.39.0.beta.5

    要获取最新版本的CocoaPods,请运行
    gem安装CocoaPods--pre

    或者,请按照说明运行未发布的功能:

    获得最新版本的CocoaPods后,再次运行
    pod install

  • 将cocoapods更新至最新版本,在终端中键入
    sudo gem安装cocoapods
  • 在项目目录下运行
    pod update
  • 请记住为所有POD的
    Debug
    选项将启用位码设置为
  • 固定的
  • 此问题已修复,因为
    Pods frameworks.sh中的以下代码:

    # Embed linked Swift runtime libraries
    local basename
    basename="$(basename "$1" | sed -E s/\\..+// && exit ${PIPESTATUS[0]})"
    local swift_runtime_libs
    swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/${basename}.framework/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u  && exit ${PIPESTATUS[0]})
    for lib in $swift_runtime_libs; do
      echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
      rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
      code_sign_if_enabled "${destination}/${lib}"
    done
    
    更改为:

    # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7.
    if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then
        local swift_runtime_libs
        swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u  && exit ${PIPESTATUS[0]})
      for lib in $swift_runtime_libs; do
        echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
        rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
        code_sign_if_enabled "${destination}/${lib}"
      done
    fi
    

    我犯的错误是,我使用Adhoc配置文件而不是App Store配置文件来构建spa,以便将spa上传到App Store。

    我使用fastlane gym 1.9.0构建我的应用程序,但由于文件不匹配,它一直被苹果拒绝,而如果我通过XCode 8上传,它被接受。我在ipa的swift su中检查了swift LIBpport文件夹和Frameworks文件夹中,我发现swift支持文件夹中的LIB用于swift 2.3,而Frameworks文件夹中的LIB用于swift 3。因此,在我的健身房文件中,我添加了工具链选项:

    gym(
      scheme: "CoCadre", 
      configuration: "Production Release",
      clean: true,
      use_legacy_build_api: false,
      toolchain: "com.apple.dt.toolchain.Swift_2_3"
    )
    
    *注意,我必须将use_legacy_build_api更改为false才能使用toolchain选项

    为了使用toolchain选项,需要将use_legacy_build_api设置为false


    我有完全相同的问题。有什么解决方案吗?你要辞职吗?这是从Xcode直接上传的吗?@Andy存档后立即从Xcode直接上传。你的目标是什么iOS SDK?我以为你无法提交到禁用位码的商店。在我的情况下,SwiftSupport/iphoneos/是空的。我验证成功,但build在iTunes Connect的预发布部分大约12小时后仍在处理
    。嘿,谢谢你!我仍然收到关于API分析文件的警告
    gym(
      scheme: "CoCadre", 
      configuration: "Production Release",
      clean: true,
      use_legacy_build_api: false,
      toolchain: "com.apple.dt.toolchain.Swift_2_3"
    )