Xcode 存档验证错误 - Xcode 9 和 Swift 4
Posted
技术标签:
【中文标题】Xcode 存档验证错误 - Xcode 9 和 Swift 4【英文标题】:Xcode Archive Validation Errors - Xcode 9 and Swift 4 【发布时间】:2018-03-07 17:17:51 【问题描述】:当我尝试使用 Xcode 存档将应用上传到应用商店时,出现以下验证错误:
iTunes Store 操作失败 无效捆绑包。捆绑在 'Dvp.app/Frameworks/AlamofireSwiftyJSON.framework' 包含不允许的 文件“框架”。
iTunes Store 操作失败 无效捆绑包。捆绑在 'Dvp.app/Frameworks/AlamofireSwiftyJSON.framework' 包含不允许的 嵌套包。
iTunes Store 操作失败 CFBundleIdentifier 冲突。有 多个具有 CFBundleIdentifier 值的捆绑包 ios 应用程序“Dvp.app”下的“com.swiftyjson.SwiftyJSON”。
iTunes Store 操作失败 CFBundleIdentifier 冲突。有 多个具有 CFBundleIdentifier 值的捆绑包 iOS 应用程序“Dvp.app”下的“org.alamofire.Alamofire”。
我通过将这些框架拖放到我的项目中来引用它们。我没有使用 cocoapod 或 swift 包管理器将第三方框架引用到项目中。
知道如何摆脱这些验证问题吗?
谢谢
【问题讨论】:
【参考方案1】:归档应用后,使用 AppStore 选择生成 ipa,并使用 Application Loader 上传
【讨论】:
【参考方案2】:对我来说解决这个问题的关键,除了ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES=NO
,还在构建设置中为除主应用程序目标之外的所有目标设置EMBEDDED_CONTENT_CONTAINS_SWIFT=NO
。必须清除派生数据,但之后一切正常。
【讨论】:
你的意思是我必须为所有第三方库设置这些密钥对吗?我是否只需要为 iOS 目标执行这些操作? 我尝试了这 2 个设置,但对我不起作用。 你是为 IOS 目标做的吗? 是的,我为 iOS 目标做了。 还有什么我需要考虑的。这个 alamofire 有 4 个目标。例如:macOS、tvOS 和 watchOS。我需要对它们做些什么吗?【参考方案3】:在这种情况下,这些验证错误是由于 AlamofireSwiftyJSON 框架而发生的。错误如下:
iTunes Store 操作失败 无效捆绑包。捆绑在 'Dvp.app/Frameworks/AlamofireSwiftyJSON.framework' 包含不允许的 文件“框架”。
iTunes Store 操作失败 无效捆绑包。捆绑在 'Dvp.app/Frameworks/AlamofireSwiftyJSON.framework' 包含不允许的 嵌套包。
为了消除上述错误,我刚刚选择了 AlamofireSwiftyJSON 目标并在“构建阶段”选项卡中添加了“运行脚本”。
参考下图:
cd "$CONFIGURATION_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH/"
if [[ -d "Frameworks" ]]; then
rm -fr Frameworks
fi
这修复了上述验证错误以及以下验证错误:
iTunes Store 操作失败 CFBundleIdentifier 冲突。有 多个具有 CFBundleIdentifier 值的捆绑包 iOS 应用程序“Dvp.app”下的“com.swiftyjson.SwiftyJSON”。
iTunes Store 操作失败 CFBundleIdentifier 冲突。有 多个具有 CFBundleIdentifier 值的捆绑包 iOS 应用程序“Dvp.app”下的“org.alamofire.Alamofire”。
希望这会有所帮助。
【讨论】:
以上是关于Xcode 存档验证错误 - Xcode 9 和 Swift 4的主要内容,如果未能解决你的问题,请参考以下文章
kivy xcode 7 问题 - 构建和存档工作,但验证失败
每次我尝试通过存档验证我的应用程序时,Xcode 都会不断给我报亭错误