上传到 App Store 时二进制文件无效

Posted

技术标签:

【中文标题】上传到 App Store 时二进制文件无效【英文标题】:Invalid binary when uploading to App Store 【发布时间】:2020-02-15 15:40:54 【问题描述】:

我之前使用了以下功能,暂时没有使用,所以我从info.plist中删除了它,但是我在上传应用程序时遇到了问题。我不想将这些功能添加到info.plist,因为我不再使用它们了。我该怎么办?

ITMS-90683: Info.plist 中缺少用途字符串 - 您的应用代码引用了一个或多个访问敏感用户数据的 API。应用的 Info.plist 文件应该包含一个 NSPhotoLibraryUsageDescription 键和一个面向用户的目的字符串,清楚而完整地解释为什么你的应用需要数据。从 2019 年春季开始,所有提交到 App Store 的访问用户数据的应用程序都必须包含目的字符串。如果您使用的是外部库或 SDK,它们可能会引用需要目的字符串的 API。虽然您的应用可能不使用这些 API,但仍需要使用目的字符串。您可以联系库或 SDK 的开发人员,并要求他们发布不包含 API 的代码版本。了解更多信息 (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy)。

ITMS-90683:Info.plist 中缺少用途字符串 - 您的应用代码引用了一个或多个访问敏感用户数据的 API。应用程序的 Info.plist 文件应包含一个 NSCameraUsageDescription 键和一个面向用户的目的字符串,清楚而完整地解释您的应用程序需要数据的原因。从 2019 年春季开始,所有提交到 App Store 的访问用户数据的应用程序都必须包含目的字符串。如果您使用的是外部库或 SDK,它们可能会引用需要目的字符串的 API。虽然您的应用可能不使用这些 API,但仍需要使用目的字符串。您可以联系库或 SDK 的开发人员,要求他们发布不包含 API 的代码版本。

【问题讨论】:

“虽然您的应用可能不使用这些 API,但仍需要目的字符串”非常清楚。 【参考方案1】:

如果您看到该警告,则 App Store(通过自动查看已编译的应用程序)认为您正在使用这些功能。通常这意味着您的应用程序中存在引用这些 API 的代码。在这种情况下,它是与相机和照片库一起使用的代码。即使您不再使用这些功能,如果您编译的二进制文件中的代码引用了这些 API,Apple 将坚持在您的 info.plist 中存在这些目的(因为他们无法区分这些功能之间存在的区别)并使用过,或存在且未使用过)。

您的选择是:

如果您认为这些功能不会恢复,请从您的应用程序中完全删除使用这些 API 的代码。您可能还想暂时不包含这些文件,方法是将它们从应用的构建目标中删除。 如果这太复杂了,并且您确定这些功能实际上不再在您的应用中使用,那么请使用您之前收到的任何消息填写您的 info.plist 的这些部分,这在知识上是安全的没有用户会真正看到它们。

总之,如果您引用了这些 API,即使您不使用它们,您也必须在应用的 info.plist 中有适当的用途字符串。

【讨论】:

以上是关于上传到 App Store 时二进制文件无效的主要内容,如果未能解决你的问题,请参考以下文章

无法将应用程序二进制文件上传到 App Store

App Store 错误:您上传的二进制文件无效

上传到 App Store 时不支持的架构

如何解决 App Store 中的无效二进制错误

无法将应用上传到 App Store 连接

iOS 启动图像在 Dev 中有效,但在 App Store 版本中无效