Qt Mac App Store application rejected

北城以北 提交于 2019-12-10 21:34:19

问题


My new Qt application submission has been rejected from Mac App Store. The reason is:

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

How can I solve this issue?


回答1:


Easy answer:

Get rid of those offending API's?

More detailed answer:

According to this Qt page, if you use Qt 4.7 you can specify your build target to use Cocoa only.

Since Carbon has been deprecated by Apple (and won't work on 64-bit machines), it makes sense that Apple doesn't want developers to use Carbon API's in applications that will be released on the app store.

Future proof your app by getting rid of any older API's that won't work on 64-bit machines. And Qt certainly has documentation on how to do things in a non-Carbon way.




回答2:


I got exactly the same problem. I've finally traced down to the location where these so-called privatate apis are called. They are called from inside webkit. webkit uses a webkit system interface library which is directly supplied from apple in the format of compiled static library+header file. More specifically, they are the four files located under the path src\3rdparty\webkit\WebKitLibraries:

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

I always wondered if it's really a private api, who else would know how to call it without any documentation? Now it's turned out to be apple itself. Since neither nokia or digia has the source code to these libraries, there is probably nothing they can do about it.

Now isn't it ironic that any qtwebkit-based apps will be rejected by apple due to private api access from libraries created?

Please correct me if I am wrong or miss anything. I really hope I am wrong.



来源:https://stackoverflow.com/questions/10766940/qt-mac-app-store-application-rejected

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!