问题
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