无效的Swift支持 - 文件不匹配

Dan*_*Dan 113 xcode ios swift

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

我有一段时间的"无效的快速支持"错误(有其他相关问题)...但是现在它变成了一些不同的东西.

Apple的错误现在说:

无效的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/libswiftCoreData.dylib,/Payload/App.app/Frameworks/libswiftAVFoundation. dylib

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

不要对后处理进行处理

/Payload/App.app/Frameworks/libswiftCoreLocation.dylib,/Payload/App.app/Frameworks/libswiftCoreMedia.dylib,/Payload/App.app/Frameworks/libswiftCoreData.dylib,/Payload/App.app/Frameworks/libswiftAVFoundation. dylib.

通过搜索"不要应用后期处理","确保文件正确,重建您的应用程序,然后重新提交"等,我无法找到类似的错误.

有谁知道我怎么能"确保文件是正确的" - 或 - 有任何其他建议吗?谢谢.

小智 80

同样的问题在这里 我认为这很可能是开发人员工具中与Bitcode相关的错误.

我刚刚找到了解决方法.

  1. 使用新的内部版本号归档您的应用:(
  2. 从管理器中查找Finder中的存档(.xcarchive文件)"在Finder中显示"
  3. 打开包装,发现类似的目录Products/Applications/YourApp.ipa/Frameworks/SwiftSupport/iphoneos/
  4. 所有libswiftXxx.dylib文件复制SwiftSupport/iphoneos/Products/Applications/YourApp.ipa/Frameworks/和覆盖
  5. 现在,从Organizer 上传到App Store

通过这个过程,我成功上传了我的构建.现在我在等待审查.

注意:

我正在使用CocoaPods,ENABLE_BITCODE选项是NO.

  • 就我而言,SwiftSupport/iphoneos /是空的. (3认同)
  • 验证成功,但在iTunes Connect的预发布部分中,构建仍然是"处理"~12小时后. (2认同)
  • 有人在Xcode 7 GM中遇到这个问题吗? (2认同)
  • 嘿,谢谢你!我仍然收到关于API分析文件太大的警告http://cl.ly/image/0s0N0s441s0X - 但重要的是它仍然通过并且能够进入TestFlight. (2认同)

DJ *_*ona 51

编辑:CocoaPods 0.39.0已经发布,修复了这个问题!

正如@orkenstein所提到的,通过注释掉一些代码,有一个更简单的解决方案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
Run Code Online (Sandbox Code Playgroud)

=>

# 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
Run Code Online (Sandbox Code Playgroud)

保存Pods-frameworks.sh,你应该好好去!

  • 这对我有用.只是抬头,如果您运行pod-install或pod-update,您可能需要再次发表评论! (4认同)

小智 16

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

https://github.com/CocoaPods/CocoaPods/pull/4268

要获得最新版本的CocoaPods运行 gem install cocoapods --pre

或者,按照有关运行未发布功能的说明进行操作:http: //guides.cocoapods.org/using/unreleased-features

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


Zho*_*wen 8

我使用fastlane gym 1.9.0来构建我的应用程序并且它一直被苹果拒绝,因为文件不匹配,而如果我通过XCode 8上传则被接受.我检查了ipa的swift支持文件夹和Frameworks文件夹中的swift库,我发现swift支持文件夹中的库是swift 2.3,而在Frameworks文件夹中它是swift 3.所以在我的健身房文件中我添加了工具链选项:

gym(
  scheme: "CoCadre", 
  configuration: "Production Release",
  clean: true,
  use_legacy_build_api: false,
  toolchain: "com.apple.dt.toolchain.Swift_2_3"
)
Run Code Online (Sandbox Code Playgroud)

*请注意,我必须将use_legacy_build_api更改为false才能使用工具链选项

要使用toolchain选项,需要设置use_legacy_build_api:false https://github.com/fastlane/fastlane/issues/6003#issuecomment-244792185


ork*_*ein 6

GitHub上有一个不太复杂的解决方案:

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

嵌入链接的Swift运行时库
注释复制这些库的代码块(以及代码签名)似乎修复了我的提交问题.我还没有深入研究是否只是复制它们导致问题或是否是代码签名.我在那里有点偏离我的深度.