Ios Swift支持无效-文件不’;不匹配
我刚刚在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 通过搜索“不应用后期处理”、“确保文件正确、重建应用程序并重新提交”等,我无法找到类似的错误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
有人知道我如何“确保文件正确”——或者——有其他建议吗?谢谢。我在集成不支持位代码的库(例如当前稳定版本的New Relic)时看到过此错误。解决方案是删除库、禁用位代码(并且可能无法提交到存储),或者等待库供应商提供支持位代码的更新二进制文件。这里也有同样的问题。我认为这很可能是开发人员工具的一个bug,与位代码有关 我刚刚找到了解决办法
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
sudo gem安装cocoapods
pod update
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"
)