我刚刚在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相关的错误.
我刚刚找到了解决方法.
Products/Applications/YourApp.ipa/Frameworks/
和SwiftSupport/iphoneos/
libswiftXxx.dylib
文件复制SwiftSupport/iphoneos/
到Products/Applications/YourApp.ipa/Frameworks/
和覆盖通过这个过程,我成功上传了我的构建.现在我在等待审查.
注意:
我正在使用CocoaPods,ENABLE_BITCODE
选项是NO.
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
,你应该好好去!
小智 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
再次运行.
我使用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
归档时间: |
|
查看次数: |
14656 次 |
最近记录: |