iOS 私有 api 使用:_Unwind_Resume

Posted

技术标签:

【中文标题】iOS 私有 api 使用:_Unwind_Resume【英文标题】:iOS private api usage: _Unwind_Resume 【发布时间】:2013-09-11 01:56:57 【问题描述】:

我正在尝试为 ios7 准备一个应用程序以供审核,但我碰上了这堵砖墙:

应用在....中引用非公开符号_Unwind_Resume

在 Release-iphoneos 内部,我试图找到罪魁祸首 nm -u *.a | grep -C 20 Unwind_Resume

但看起来每个依赖项都会在某个时候列出Unwind_Resume

这可能是什么原因造成的?如何从这里调试?

【问题讨论】:

_Unwind_resume 在由于异常而发生清理后恢复展开。如果您使用 C++ 或 ObjC++,这必然会发生。我不确定为什么 Apple 将其标记为“私有 API”:这些调用是(或应该是)编译器生成的。我会问苹果这个。 我认为是这样的。收到该消息后,我尽快通过电子邮件发送了支持联系人。我真的希望在 iOS7 的第一天就可以使用。啊。 【参考方案1】:

我们的 iOS 库也给我们的开发人员带来了验证错误 - 我们的库的修复最终非常简单。

    运行产品 > 分析(针对库,而不是应用!) 修复任何“API 滥用”错误 - 对我们来说,这是一些随机的“参数可能为空”通知 重建

这为我们和我们的客户解决了问题,与 Unwind_Resume 或任何私有 api 无关。

【讨论】:

我这样做了,看到两个问题,更正了它们,同样的错误信息。【参考方案2】:

现在应该在 App Store Validator 中修复此问题。请再试一次。

【讨论】:

【参考方案3】:

我遇到了同样的问题。我通过在不启用 64 位的情况下重建来解决它。在 Xcode 中禁用 64 位构建:

在右侧的文件浏览器中选择应用程序 转到主窗口中的“构建设置”选项卡 向下滚动到架构组并查看架构设置的值。 是否设置为“标准架构(包括 64 位)。如果是这样,请切换到“标准架构(armv7、armv7s)”

我不确定这是否是验证阶段的错误,或者是否存在阻止开发人员在任何人有实际硬件进行测试之前提交 64 位应用程序。

--克里斯

【讨论】:

【参考方案4】:

我对我的提交进行了二进制搜索,在某些时候,我搞砸了 project.pbx* 设置。我的一个 pod 依赖项将 build-active-architecture-only 设置为 YES。

我重新提交,再次设置所有架构目标,并通过了验证。

【讨论】:

以上是关于iOS 私有 api 使用:_Unwind_Resume的主要内容,如果未能解决你的问题,请参考以下文章

iOS 中不使用私有 API 的例外情况?

使用私有 api 检测 iOS 中启用的热点

如何使用私有系统 API?

如何使用私有 API 阻止 iOS 应用程序中的来电?

私有 API 到底是啥,如果使用了一个 iOS 应用程序,为啥 Apple 会拒绝它?

iOS - APP审核Guideline 2.5.1被拒,使用了私有API