Qt Mac App Store 应用被拒绝

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

我该如何解决这个问题?

请指明您正在使用的Qt版本。 - NSGod
当我提交我的应用程序到Mac App Store时,我遇到了完全相同的问题。你最终解决了这个问题吗? - Stephen Cheng
2个回答

3

简单回答:

摆脱那些有问题的API?

更详细的回答:

根据Qt网页,如果你使用Qt 4.7,你可以指定构建目标仅使用Cocoa。

由于Carbon已被Apple弃用(并且不适用于64位机器),因此苹果不希望开发者在发布到应用商店的应用程序中使用Carbon API。

通过摆脱任何在64位机器上无法工作的旧API来使你的应用程序具备未来的功能。Qt肯定有关于如何以非Carbon方式处理事务的文档。


不,我不确定那个...但是上面列出的许多/大多数API都是如此,如果您正确构建QT(支持64位和Cocoa而不是Carbon),我认为这将在很大程度上(如果不是全部)有助于您的应用程序被App Store接受。 - Michael Dautermann
1
一个 Carbon UI 应用程序不能在 64 位机器上运行的说法是误导性的。目前,64 位 Intel Mac 完全能够运行 32 位 Intel Carbon UI 应用程序。我认为你想说的是 Carbon UI 不支持 64 位,这是真的,但这是不同的问题。我认为问题更多地与他的应用程序或 Qt 框架使用私有 API 有关,而不是使用 Carbon UI。 - NSGod
当指定构建目标仅使用Cocoa时,这是针对我的应用程序目标还是Qt构建的?如何操作? - Ahmed Said
你的项目中包含Qt。如何做到这一点?我在我的回答中提供的链接页面是否有助于回答这个问题? - Michael Dautermann
你好,我的问题现在出在QtWebkit上。它是拥有所有这些私有API的模块。是否有补丁或其他解决此问题的方法? - Ahmed Said
显示剩余3条评论

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

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

我一直在想,这是不是真的是私有 API,谁会在没有任何文档的情况下知道如何调用它呢?现在发现原来是苹果自己。由于诺基亚和 Digia 都没有这些库的源代码,他们可能什么也做不了。

现在讽刺的是,任何基于 qtwebkit 的应用都将因为从创建的库中获取私有 api 权限而被苹果拒绝。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接