Xcode 9与Swift 4下归档验证错误问题咨询
解决Xcode归档上传App Store时的三个验证错误
刚踩过几乎一模一样的坑,给你逐个拆解针对性的解决办法:
1. 无效Bundle:路径Dvp.app/Frameworks/AlamofireSwiftyJSON.framework下包含不允许的文件Frameworks
这个问题大多是因为引入的AlamofireSwiftyJSON.framework本身嵌套了其他框架,或者打包配置没处理到位。试试这些步骤:
- 打开该框架的Target设置,进入Build Phases → Embed Frameworks,确认里面没有重复添加的嵌套框架;如果是用CocoaPods引入的,先执行
pod deintegrate清理旧依赖,再重新pod install。 - 在框架的Build Settings里,找到
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES,把它设为NO(如果主工程已经嵌入了Swift标准库,或者该框架本身不需要单独嵌入)。 - 要是你自己编译的框架,手动右键打开
AlamofireSwiftyJSON.framework包,删除里面的Frameworks文件夹后再重新导入工程。
2. 无效Bundle:包含不允许的嵌套Bundle
这其实是第一个问题的连锁反应,核心还是框架嵌套不符合App Store的规范。额外补充几个排查点:
- 确保所有第三方框架都是直接添加到主工程的Embed Frameworks中,而不是嵌套在其他框架内部。
- 如果你用CocoaPods,尝试在Podfile里替换
use_frameworks!为use_modular_headers!,避免框架嵌套的问题,然后重新安装依赖。 - 检查主工程的Build Phases → Copy Bundle Resources,有没有误把框架的Bundle文件加进去,有的话直接移除。
3. CFBundleIdentifier冲突:存在多个Bundle重复ID
这个是因为主App或第三方框架的Bundle ID重复了,App Store要求每个Bundle的ID必须唯一:
- 打开每个第三方框架的
Info.plist文件,找到CFBundleIdentifier字段,把它改成主App ID的扩展格式,比如主App是com.yourcompany.Dvp,框架就设为com.yourcompany.Dvp.AlamofireSwiftyJSON。 - 如果是CocoaPods生成的框架,检查Pods工程里每个框架的Info.plist,确认Bundle ID没有和主App或其他框架重复。
- 清理工程缓存:按
Cmd+Shift+K清理编译产物,再删除~/Library/Developer/Xcode/DerivedData下对应工程的文件夹,重新归档试试。
通用排查小技巧
- 归档前先执行Product → Archive,然后选择Validate App,提前在本地发现问题,避免上传到App Store才报错。
- 确保你的Xcode是最新稳定版本,旧版本可能存在一些打包逻辑的bug。
内容的提问来源于stack exchange,提问作者Oshadha
相关产品推荐
相关产品推荐

