Qt Mac App Store应用程序被拒绝

时间:2012-05-26 14:07:53

标签: macos cocoa qt app-store macos-carbon

我的新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

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

简单回答:

摆脱那些违规的API?

更详细的回答:

According to this Qt page,如果你使用Qt 4.7,你可以指定你的构建目标只使用Cocoa。

由于Apple已经弃用了Carbon(并且不能在64位计算机上运行),因此Apple不希望开发人员在将在应用商店发布的应用程序中使用Carbon API。

通过删除任何无法在64位计算机上运行的旧API,来证明您的应用程序。 Qt肯定有关于如何以非碳方式做事的文档。

答案 1 :(得分:0)

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

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

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

现在具有讽刺意味的是,由于创建了库的私有api访问权限,任何基于qtwebkit的应用程序都会被苹果拒绝吗?

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