Qt Mac App Store application rejected
Asked Answered
C

2

3

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?

Chou answered 26/5, 2012 at 14:7 Comment(2)
Please specify what version of Qt you're usingRecruitment
I got exactly the same problem when I submit my app to Mac App store. Did you solve the issue finally?Grane
R
3

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.

Ragen answered 26/5, 2012 at 14:17 Comment(8)
Are you sure that all rejected API's are Carbon ones?Chou
No, I'm not certain of that... but many/most of those API's listed up there are, and if you build QT correctly (to support 64-bit and Cocoa and not Carbon), I suspect that will go a long long way (if not all the way) towards having your app accepted on the app store.Ragen
The statement that a Carbon UI application won't work on 64 bit machines is misleading. At the current time, a 64-bit Intel Mac is perfectly capable of running a 32-bit Intel Carbon UI app. I assume what you meant to say is that Carbon UI isn't supported in 64bits, which while true, is a different issue. I think the problem has more to do with the fact that either his app or the Qt frameworks are using private APIs and less to do with using a Carbon UI.Recruitment
When specifying build target to use Cocoa only .. is this for my application target or for Qt build? and how to do so?Chou
For Qt that you're including in your project. And how to do so? Does the page I linked to in my answer help answer that question?Ragen
Hello, my problem is now with QtWebkit. It's the module having all these private Api's. Are there patches or whatever that can solve this issue?Chou
None of the specified symbols are Carbon API. They are private AppKit SPI.Hungnam
@Ahruman - thanks for the downvote. Is the Carbon build of Qt using these private AppKit SPI's? I doubt the Original Poster (Ahmed) purposefully made use of private API's on his own.Ragen
G
0

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.

Grane answered 14/1, 2013 at 4:51 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.