我刚刚在Swift 2中重新编写了一个应用程序。我正在尝试将应用程序上传到iTunesConnect(通过Xcode 7 GM)进行内部测试。
我在一段时间内遇到了“无效的快速支持”错误(which has other, related questions)...但是现在它变成了一些不同的东西。
Apple的错误现在说:
无效的快速支持
文件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。
我一直无法通过搜索“请勿应用后期处理”,“确保文件正确,重建您的应用并重新提交”等来找到类似错误。
有谁知道我怎么能“确保文件正确” - 或者 - 还有其他建议吗?谢谢。
答案 0 :(得分:79)
这里的问题相同。我认为这很可能是与Bitcode相关的开发人员工具的错误。
我刚刚找到了解决方法。
Products/Applications/YourApp.ipa/Frameworks/
和SwiftSupport/iphoneos/
libswiftXxx.dylib
个文件从SwiftSupport/iphoneos/
复制<{strong>到Products/Applications/YourApp.ipa/Frameworks/
并覆盖通过这个过程,我成功上传了我的版本。现在我在等待审查。
注:
我正在使用CocoaPods,ENABLE_BITCODE
选项为NO。
答案 1 :(得分:51)
编辑:CocoaPods 0.39.0已发布修复此问题!
作为@orkenstein mentioned,Pod-frameworks.sh
通过在Pods/Target Support Files/Pods/Pods-frameworks.sh
中注释掉一些代码来a simpler solution。我在这里提供了更多细节。
在Xcode项目目录中,打开# 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
# 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
=&GT;
Pods-frameworks.sh
保存public SampleFragmentPagerAdapter(FragmentManager fm,
List<String> tabtitle, int count) {
super(fm);
PAGE_COUNT = count;
tabTitles = tabtitle;
}
@Override
public int getCount() {
return PAGE_COUNT;
}
@Override
public Fragment getItem(int position) {
return TabFragment.newInstance(position);
}
@Override
public CharSequence getPageTitle(int position) {
// Generate title based on item position
return tabTitles.get(position);
}
你应该好好去!
答案 2 :(得分: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
获得最新版本的CocoaPods后,再次运行pod install
。
答案 3 :(得分: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"
)
*请注意,我必须将use_legacy_build_api更改为false才能使用工具链选项
要使用工具链选项,需要设置use_legacy_build_api:false https://github.com/fastlane/fastlane/issues/6003#issuecomment-244792185
答案 4 :(得分:6)
GitHub上有一个不太复杂的解决方案:
我在 Pods-frameworks.sh 中查看并找到了一个部分 评论为:
嵌入链接的Swift运行时库
评论复制这些库的代码块(和代码签名)似乎 修复了我的提交困境。我还没有深入探究是否 它只是复制它们导致问题或者它是什么 代码签名。我在那里得到了一些深度。
答案 5 :(得分:4)
sudo gem install cocoapods
。pod update
。Debug
选项设置启用Bitcode 至否。问题已解决,因为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
答案 6 :(得分:2)
我的解决方案:
我正在使用Cocoapods Reveal和Reveal需要禁用Bitcode。因此,我只为Debug进行了Reveal(适用于任何其他Framwork):
pod 'Reveal-iOS-SDK', :configurations => ['Debug']
由于我的Reveal现在只配置为Debug,我只为Debug调试了Bitcode。
使用此设置一切正常,没有任何黑客......
答案 7 :(得分:0)
我已经看到在集成不支持bitcode的库时会出现此错误(例如当前稳定版本的New Relic)。解决方案是删除库,禁用bitcode(可能无法提交到商店),或者等待从库供应商那里支持bitcode的更新二进制文件。
答案 8 :(得分:0)
我的错误是我使用Adhoc配置文件而非App Store配置文件构建,用于将spa上传到应用商店。