3

我的新 Qt 应用程序提交已被 Mac App Store 拒绝。原因是:

Binary Rejected May 23, 2012 07:42 PM
Reasons for Rejection:
2.5 Apps that use non-public APIs will be rejected
2.30 Apps that do not comply with the Mac OS X File System documentation
will be rejected
May 23, 2012 07:42 PM. From Apple.
2.5

The use of non-public APIs can lead to a poor user experience should these APIs
change in the future, and is therefore not permitted. The following non-public
APIs are included in your application:

: NSAccessibilityCreateAXUIElementRef
: NSAccessibilityHandleFocusChanged
: NSAccessibilityUnregisterUniqueIdForUIElement
: NSMouseMovedNotification
: OBJC_IVAR_$_NSCGSContext._cgsContext
: _NSDrawCarbonThemeBezel
: _NSDrawCarbonThemeListBox
: _NSPopUpCarbonMenu3
: _NXShowKeyAndMain

我该如何解决这个问题?

4

2 回答 2

3

简单的回答:

摆脱那些有问题的 API?

更详细的答案:

根据这个 Qt page,如果您使用 Qt 4.7,您可以指定您的构建目标仅使用 Cocoa。

由于 Apple 已弃用 Carbon(并且无法在 64 位机器上运行),因此 Apple 不希望开发人员在将在应用商店发布的应用程序中使用 Carbon API 是有道理的。

通过摆脱任何无法在 64 位机器上运行的旧 API 来证明您的应用程序的未来。Qt 当然有关于如何以非碳方式做事的文档。

于 2012-05-26T14:17:58.350 回答
0

我遇到了完全相同的问题。我终于追溯到了调用这些所谓的私有 api 的位置。它们是从 webkit 内部调用的。webkit使用的是苹果直接提供的webkit系统接口库,格式为编译后的静态库+头文件。更具体地说,它们是位于路径 src\3rdparty\webkit\WebKitLibraries 下的四个文件:

libWebKitSystemInterfaceLeopard.a libWebKitSystemInterfaceLion.a libWebKitSystemInterfaceMountainLion.a libWebKitSystemInterfaceSnowLeopard.a

我一直想知道它是否真的是一个私有 api,如果没有任何文档,还有谁知道如何调用它?现在原来是苹果本身。由于 nokia 或 digia 都没有这些库的源代码,因此他们可能无能为力。

现在,由于来自创建的库的私有 api 访问,任何基于 qtwebkit 的应用程序都会被苹果拒绝,这不是很讽刺吗?

如果我错了或遗漏了什么,请纠正我。我真的希望我错了。

于 2013-01-14T04:51:20.787 回答