非公共API使用:该应用包含一个或多个损坏的二进制文件

Nit*_*hel 11 xcode itunesconnect app-store ios application-loader

对于iOS应用程序新版本上传,我真的很沮丧.这是故事.

2018年1月25日,我们上传了新版本3.3.27内部版本号1.0.成功处理并在测试飞行中进行测试.之后我们发现了一些问题,并在2018年1月26日我们修复它并上传新版本1.1我们从iTunes Connect收到电子邮件说:

亲爱的开发者,

我们发现您最近为"appname"发送了一个或多个问题.要处理您的交付,必须纠正以下问题:

非公共API使用情况:

The app contains one or more corrupted binaries. Rebuild the app and resubmit.
Run Code Online (Sandbox Code Playgroud)

如果源代码中的方法名称与上面列出的私有Apple API匹配,则更改方法名称将有助于防止在将来的提交中标记此应用程序.此外,请注意,上述API中的一个或多个可能位于应用程序附带的静态库中.如果是这样,他们必须被删除.

如果您认为此消息是错误发送的,并且您仅按照指南使用Apple发布的API,请将应用程序的九位Apple ID以及有关您认为上述API被错误标记的原因的详细信息发送到email@apple.com.有关详细信息,请访问

虽然我在上传成功之前验证了构建:

在此输入图像描述

当我上传应用程序时,我获得了以下成功:

在此输入图像描述

在邮件中我没有得到正确的信息是什么是损坏的二进制文件或框架的名称.我们使用的方法是什么,非公开我们在1月25日之前上传了该应用程序的100s更新版本,一切都很好并且可以接受.

然后我尝试了以下更改:

  1. 重建应用并再次提交获得相同的电子邮件.
  2. 卸载Xcode9.2并再次安装获取相同的电子邮件.
  3. 删除更改并再次上传内部版本号1.0获取相同的电子邮件
  4. 更改Mac并尝试再次上传新版本相同的电子邮件.
  5. 尝试上传旧版本之前和之后相同的电子邮件

我们发送了一封电子邮件给iTunes Connect Review,但是从3天开始我们没有得到他们的回复.我做研究从1月26日起许多用户在提交申请时面临那种问题.

如果有人知道过去或最近遇到过那种问题的解决方案请帮助我们

And*_*eag 5

经过对这部分的大量调查,我们终于找到了这个问题的问题:似乎Apple为支持32位和64位的应用程序给出了这个错误。

苹果针对 Mac Appstore 发出了提醒,但 iOS 应用程序似乎也受到了影响。

因此,解决方案是支持位码或通过删除对 ARMV7 和 ARMV7S 的支持或从构建设置的有效架构中删除对 32 位设备的支持。这意味着您的应用程序只能在 iPhone 5S 及更高版本上运行。我希望这可以帮助别人。

谢谢您,编码愉快!


Nit*_*hel 4

对于这个问题没有一个解决方案,苹果现在在其官方帐户、论坛或官方开发者网站上没有提及任何有关该错误或无效二进制相关新闻的内容。即使他们也没有回复您的电子邮件。

\n\n

有些通过BitCode启用解决该问题,有些通过更新解决该问题PODFILE,有些通过删除项目中使用的一些旧的 swift 框架来解决该问题。

\n\n

但最终我自己找到了适合我的解决方案。当我构建项目时,我在左侧面板中发现了一些警告,Xcode如下所示。

\n\n

在此输入图像描述

\n\n

我认为苹果现在删除了旧的 swift 支持,因此如果您的项目使用任何 swift 类或 podfile,我们需要更新到 swift 4。

\n\n

一旦我转换到 swift 4,我就会收到以下警告:

\n\n
\n

已弃用在 Swift 4 模式中使用 Swift 3 @objc 推理。\n 请解决已弃用的 @objc 推理警告,使用 \xe2\x80\x9c 测试您的代码\n使用已弃用的 Swift 3 @objc 推理\xe2\x80\x9d启用日志记录,然后通过将“appname”目标的“Swift 3 @objc Inference”构建设置更改为“默认”来禁用推理。

\n
\n\n

为了修复此警告,我使用以下链接在 Swift 4 模式下使用 Swift 3 @objc 推理已被弃用?在 swift 类中,我在公开声明之前使用了 @objc 。

\n\n

我还查看了所有源代码并从项目中删除了未使用的 podfile 库和类。

\n\n

通过上述方式我解决了这个问题,并在上​​传第 13 个版本后最终接受了。

\n