Discussion:
Cannot submit app using wx to Mac App Store due to QuickTime API usage
David Foster
2014-06-26 00:43:47 UTC
Permalink
I am creating a test app using wxPython 3.0.0 (cocoa) to see if it can be submitted to the Mac App Store:
* https://github.com/davidfstr/Python-in-Mac-App-Store

I have fixed nearly all issues, but it appears that wxPython (by virtue of the underlying wxWidgets) uses QuickTime APIs, which is prohibited in apps that are submitted to the Mac App Store. The rejection email from Apple reads:

---

Dear developer,

We have discovered one or more issues with your recent delivery for "Hello App Store". To process your delivery, the following issues must be corrected:

Deprecated API Usage - Apple no longer accepts submissions of apps that use QuickTime APIs.

Though you are not required to fix the following issues, we wanted to make you aware of them:

[...]

Once the required corrections have been made, go to the Version Details page and click "Ready to Upload Binary." Continue through the submission process until the app status is "Waiting for Upload." You can then deliver the corrected binary.

Regards,

The App Store team

---

I would expect that this would be a problem for any app that uses wx that one would want to submit to the Mac App Store - even C++ apps.

Is there a way to build and install a custom version of wx that doesn't use QuickTime? Alternatively, would it be feasible to alter wx such that it doesn't use QuickTime in the standard build?

- David
--
Please read http://www.wxwidgets.org/support/mlhowto.htm before posting.

To unsubscribe, send email to wx-users+***@googlegroups.com
or visit http://groups.google.com/group/wx-users
Václav Slavík
2014-06-26 10:02:20 UTC
Permalink
Post by David Foster
I would expect that this would be a problem for any app that uses wx that one would want to submit to the Mac App Store - even C++ apps.
Is there a way to build and install a custom version of wx that doesn't use QuickTime?
Poedit, built with wx-3.0, is in MAS without issues. I don't recall having to do anything special (short of fixing a sandbox-related crash in wxFileDialog, fixed in 3.0.1). But then, I don't use wxMedia (which I assume would be the QT user) and disabled a few wxUSE_XXX flags I didn't care for: https://github.com/vslavik/poedit/blob/stable/deps/custom_build/config/wx/setup.h

Regards,
Vaclav
--
Please read http://www.wxwidgets.org/support/mlhowto.htm before posting.

To unsubscribe, send email to wx-users+***@googlegroups.com
or visit http://groups.google.com/group/wx-users
Vadim Zeitlin
2014-06-26 12:53:43 UTC
Permalink
On Thu, 26 Jun 2014 12:02:20 +0200 Václav Slavík wrote:

VS> On 26 Jun 2014, at 02:43, David Foster <***@gmail.com> wrote:
VS> > I would expect that this would be a problem for any app that uses wx that one would want to submit to the Mac App Store - even C++ apps.
VS> >
VS> > Is there a way to build and install a custom version of wx that doesn't use QuickTime?
VS>
VS> Poedit, built with wx-3.0, is in MAS without issues. I don't recall
VS> having to do anything special (short of fixing a sandbox-related crash
VS> in wxFileDialog, fixed in 3.0.1). But then, I don't use wxMedia (which
VS> I assume would be the QT user) and disabled a few wxUSE_XXX flags I
VS> didn't care for:
VS> https://github.com/vslavik/poedit/blob/stable/deps/custom_build/config/wx/setup.h

We should probably document in wxOSX documentation that wxMedia can't be
used for the apps to be distributed via app store, this seems like a rather
important limitation. And, of course, if there are any other classes that
pull in any "forbidden" APIs, we should at least document, and ideally
change, them as well.

Václav, do you know if there is some tool that could be used to run at
least some preliminary checks on an application to verify that it doesn't
use prohibited APIs? Or do you really need to try submitting it for this to
be checked?

Thanks,
VZ
--
TT-Solutions: wxWidgets consultancy and technical support
http://www.tt-solutions.com/
Václav Slavík
2014-06-26 16:34:15 UTC
Permalink
Post by Vadim Zeitlin
We should probably document in wxOSX documentation that wxMedia can't be
used for the apps to be distributed via app store, this seems like a rather
important limitation. And, of course, if there are any other classes that
pull in any "forbidden" APIs,
Only "heavily" deprecated things fall in this category, things that are apparently slated for removal: e.g. Java bundled with the system or QT. The other problematic thing for MAS are "private" APIs -- generally speaking, using parts of the OS that don't even have corresponding headers. Both are things I wouldn't worry about that too much - they are hard to do unknowingly.
Post by Vadim Zeitlin
we should at least document, and ideally
change, them as well.
Václav, do you know if there is some tool that could be used to run at
least some preliminary checks on an application to verify that it doesn't
use prohibited APIs? Or do you really need to try submitting it for this to
be checked?
There's a validation tool in Xcode (Archive, then Validate in the archives browser), but it is an online one, requires both a developer account and a matching app record in iTunes Connect and in my experience, never finds any real issues except code signing. According to this, it finds private API uses too: http://stackoverflow.com/questions/9695408/how-to-check-if-your-ios-app-code-is-using-an-api-that-is-not-allowed-on-the-app/9695495#9695495

The "real" validation step finds more stuff, is automated and is done within a few minutes of a submission.

Regards,
Vaclav
--
Please read http://www.wxwidgets.org/support/mlhowto.htm before posting.

To unsubscribe, send email to wx-users+***@googlegroups.com
or visit http://groups.google.com/group/wx-users
Stefan Csomor
2014-06-26 13:49:11 UTC
Permalink
Hi
Post by Václav Slavík
Post by David Foster
I would expect that this would be a problem for any app that uses wx
that one would want to submit to the Mac App Store - even C++ apps.
Is there a way to build and install a custom version of wx that doesn't use QuickTime?
Poedit, built with wx-3.0, is in MAS without issues. I don't recall
having to do anything special (short of fixing a sandbox-related crash in
wxFileDialog, fixed in 3.0.1). But then, I don't use wxMedia (which I
assume would be the QT user) and disabled a few wxUSE_XXX flags I didn't
https://github.com/vslavik/poedit/blob/stable/deps/custom_build/config/wx/
setup.h
Regards,
Vaclav
yes, wxMediaCtrl is the one that is pulling QTKit, removing this
dependancy would also mean using AVKit which only exists from 10.7 upwards
- another hint for skipping 10.6 support in trunk ;-)

Best,

Stefan
--
Please read http://www.wxwidgets.org/support/mlhowto.htm before posting.

To unsubscribe, send email to wx-users+***@googlegroups.com
or visit http://groups.google.com/group/wx-users
Václav Slavík
2014-06-26 15:52:51 UTC
Permalink
Hi,
Post by Stefan Csomor
yes, wxMediaCtrl is the one that is pulling QTKit, removing this
dependancy would also mean using AVKit which only exists from 10.7 upwards
- another hint for skipping 10.6 support in trunk ;-)
By the time 3.2 is released, even if it happened this year, even 10.7 would be *at least* two versions behind what Apple supports. So I think it's not only reasonable to drop 10.6 on the trunk, it would be crazy *not* to. There would still be 3.0 for those with a legitimate need to support 10.6.

Vaclav
--
Please read http://www.wxwidgets.org/support/mlhowto.htm before posting.

To unsubscribe, send email to wx-users+***@googlegroups.com
or visit http://groups.google.com/group/wx-users
Vadim Zeitlin
2014-06-26 19:51:31 UTC
Permalink
On Thu, 26 Jun 2014 13:49:11 +0000 Stefan Csomor wrote:

SC> yes, wxMediaCtrl is the one that is pulling QTKit,

Perhaps we should disable building it by default?

SC> removing this dependancy would also mean using AVKit which only exists
SC> from 10.7 upwards - another hint for skipping 10.6 support in trunk ;-)

It's unavoidable, sooner or later, of course, I just need to upgrade my
old (2009) iMac to 10.7... I'm not sure how much higher this machine can
go, though.

Regards,
VZ
--
TT-Solutions: wxWidgets consultancy and technical support
http://www.tt-solutions.com/
Stefan Csomor
2014-06-26 20:55:16 UTC
Permalink
Hi
Post by Vadim Zeitlin
SC> yes, wxMediaCtrl is the one that is pulling QTKit,
Perhaps we should disable building it by default?
SC> removing this dependancy would also mean using AVKit which only exists
SC> from 10.7 upwards - another hint for skipping 10.6 support in trunk ;-)
It's unavoidable, sooner or later, of course, I just need to upgrade my
old (2009) iMac to 10.7... I'm not sure how much higher this machine can
go, though.
iMacs from 2007 are supported on 10.10 as well (10.10 has the same reqs as
10.9)

I've committed a first implementation for wxMediaCtrl using AVFoundation
(can be turned on in src/osx/cocoa/mediactrl.mm)

if I don't get a lot of bug reports, we can go one step further and use it
as soon as we build for a 10.7 minimal system, note that one has to link
-framework AVFoundation and -framework CoreMedia instead of -framework
QTKit

Best,

Stefan
--
Please read http://www.wxwidgets.org/support/mlhowto.htm before posting.

To unsubscribe, send email to wx-users+***@googlegroups.com
or visit http://groups.google.com/group/wx-users
Vadim Zeitlin
2014-06-26 23:51:15 UTC
Permalink
On Thu, 26 Jun 2014 20:55:16 +0000 Stefan Csomor wrote:

SC> iMacs from 2007 are supported on 10.10 as well (10.10 has the same reqs as
SC> 10.9)

This is good news, thanks.

SC> I've committed a first implementation for wxMediaCtrl using AVFoundation

Wow, this was quick!

SC> (can be turned on in src/osx/cocoa/mediactrl.mm)

Will you add setup.h/configure options for this or should I do it?

Thanks,
VZ
--
TT-Solutions: wxWidgets consultancy and technical support
http://www.tt-solutions.com/
Stefan Csomor
2014-06-27 06:00:37 UTC
Permalink
Hi
Post by Vadim Zeitlin
SC> iMacs from 2007 are supported on 10.10 as well (10.10 has the same reqs as
SC> 10.9)
This is good news, thanks.
so would you be more inclined to set the minimum to 10.7 ? ;-)
Post by Vadim Zeitlin
SC> I've committed a first implementation for wxMediaCtrl using
AVFoundation
Wow, this was quick!
well the imperative need for it became obvious to me just after this post,
I didn't know that the even didn't allow QTKit anymore (as I didn't get a
chance to buy a WWDC ticket this year, due to the lottery system favoring
ios newbies over osx oldies ..)
Post by Vadim Zeitlin
SC> (can be turned on in src/osx/cocoa/mediactrl.mm)
Will you add setup.h/configure options for this or should I do it?
it would be great, if you could do it as I'm really not fluent

actually: should we really make it an option, or just Do the Right Thing
( ) ? ie use AVFoundation as soon as we are on a minimum 10.7 SDK when
building - or just always if we decide to raise min req to this SDK ?

Thanks,

Stefan
--
Please read http://www.wxwidgets.org/support/mlhowto.htm before posting.

To unsubscribe, send email to wx-users+***@googlegroups.com
or visit http://groups.google.com/group/wx-users
Andreas Falkenhahn
2014-06-27 13:32:04 UTC
Permalink
I'm against setting the minimum to 10.7 FWIW. Instead, it should be made optional
so that the user can decide which minimum OS X version he wants to target. Bumping
the whole shebang just because wxMediaCtrl accesses QuickTime sounds like an overreaction
to me. I've never liked the fast-paced API deprecation that is so en vogue in
the Apple universe nowadays anyway. APIs should be here to stay instead of being
revamped all the time. On top of that, the idea of trying to enforcing rigid deprecation
rules in the Appstore has an autocratic touch to it that shouldn't be supported
either.

Just my 2 cents.
Post by Stefan Csomor
Hi
Post by Vadim Zeitlin
SC> iMacs from 2007 are supported on 10.10 as well (10.10 has the same reqs as
SC> 10.9)
This is good news, thanks.
so would you be more inclined to set the minimum to 10.7 ? ;-)
Post by Vadim Zeitlin
SC> I've committed a first implementation for wxMediaCtrl using AVFoundation
Wow, this was quick!
well the imperative need for it became obvious to me just after this post,
I didn't know that the even didn't allow QTKit anymore (as I didn't get a
chance to buy a WWDC ticket this year, due to the lottery system favoring
ios newbies over osx oldies ..)
Post by Vadim Zeitlin
SC> (can be turned on in src/osx/cocoa/mediactrl.mm)
Will you add setup.h/configure options for this or should I do it?
it would be great, if you could do it as I'm really not fluent
actually: should we really make it an option, or just Do the Right Thing
( ) ? ie use AVFoundation as soon as we are on a minimum 10.7 SDK when
building - or just always if we decide to raise min req to this SDK ?
Thanks,
Stefan
--
Best regards,
Andreas Falkenhahn mailto:***@falkenhahn.com
--
Please read http://www.wxwidgets.org/support/mlhowto.htm before posting.

To unsubscribe, send email to wx-users+***@googlegroups.com
or visit http://groups.google.com/group/wx-users
Stefan Csomor
2014-06-27 15:35:37 UTC
Permalink
Hi

-----Ursprüngliche Nachricht-----
Von: Andreas Falkenhahn <***@falkenhahn.com>
Antworten an: "wx-***@googlegroups.com" <wx-***@googlegroups.com>
Datum: Freitag, 27. Juni 2014 15:32
An: "wx-***@googlegroups.com" <wx-***@googlegroups.com>
Betreff: Re: Cannot submit app using wx to Mac App Store due to QuickTime
API usage
Post by Andreas Falkenhahn
I'm against setting the minimum to 10.7 FWIW. Instead, it should be made optional
so that the user can decide which minimum OS X version he wants to target. Bumping
the whole shebang just because wxMediaCtrl accesses QuickTime sounds like an overreaction
to me. I've never liked the fast-paced API deprecation that is so en vogue in
the Apple universe nowadays anyway. APIs should be here to stay instead of being
revamped all the time. On top of that, the idea of trying to enforcing rigid deprecation
rules in the Appstore has an autocratic touch to it that shouldn't be supported
either.
It's not 'just because': I've brought up this topic before. The problem is
that the support for older systems is very consuming for me. As this
example shows, in many situations we end up having two different
implementations, this may not only be because of a new API, but also
because the system behaves differently on a certain version than on the
next one, the burden is always on me, as we cannot change Apple.

Best,

Stefan
--
Please read http://www.wxwidgets.org/support/mlhowto.htm before posting.

To unsubscribe, send email to wx-users+***@googlegroups.com
or visit http://groups.google.com/group/wx-users
Andreas Falkenhahn
2014-06-29 14:01:44 UTC
Permalink
Post by Stefan Csomor
Post by Andreas Falkenhahn
I'm against setting the minimum to 10.7 FWIW. Instead, it should be made optional
so that the user can decide which minimum OS X version he wants to target. Bumping
the whole shebang just because wxMediaCtrl accesses QuickTime sounds like an overreaction
to me. I've never liked the fast-paced API deprecation that is so en vogue in
the Apple universe nowadays anyway. APIs should be here to stay instead of being
revamped all the time. On top of that, the idea of trying to enforcing rigid deprecation
rules in the Appstore has an autocratic touch to it that shouldn't be supported
either.
It's not 'just because': I've brought up this topic before. The problem is
that the support for older systems is very consuming for me. As this
example shows, in many situations we end up having two different
implementations, this may not only be because of a new API, but also
because the system behaves differently on a certain version than on the
next one, the burden is always on me, as we cannot change Apple.
Yes, I know. Still, I'd like you to consider the consequences of setting
10.7 as a minimum. By doing that you also force all developers to upgrade to
the 10.7 SDK which AFAIR is the first SDK to use Apple's new API amnesia policy,
i.e. instead of just declaring deprecated functions as __attribute__((deprecated))
Apple decided to remove them altogether from the SDK.

Thus, many developers (myself included) decided to keep the 10.6 SDK because
that is the last SDK that still contains correct header files for all the legacy
stuff, including things as old as QuickDraw etc.

That's another reason why I strongly advocate to keep the 10.6 support
and make all things that cannot be supported on 10.6 available optionally.
--
Best regards,
Andreas Falkenhahn mailto:***@falkenhahn.com
--
Please read http://www.wxwidgets.org/support/mlhowto.htm before posting.

To unsubscribe, send email to wx-users+***@googlegroups.com
or visit http://groups.google.com/group/wx-users
Václav Slavík
2014-06-29 15:08:08 UTC
Permalink
Post by Andreas Falkenhahn
i.e. instead of just declaring deprecated functions as __attribute__((deprecated))
Apple decided to remove them altogether from the SDK.
(That's kinda the point of declaring things deprecated, so that they can be removed eventually. wx does that too and Apple's SDKs continue to mark things as deprecated without removing them outright.)
Post by Andreas Falkenhahn
That's another reason why I strongly advocate to keep the 10.6 support
and make all things that cannot be supported on 10.6 available optionally.
The idea is that if you need 10.6 support, you could still continue to use wx-3.0, while the trunk could move on and benefit from the upgraded minimum version requirement.

And make no mistake: the difference in burden between 10.7+ and anything older is significant. Even just the ability to limit yourself to 64bit and the modern Obj-C runtime are no small things. Sticking with 10.6 without very strong _practical_ reasons would be just a waste of very limited developer time. All that wasted time would be better spent making sure wx apps work better on modern OS X versions.

Regards,
Vaclav
--
Please read http://www.wxwidgets.org/support/mlhowto.htm before posting.

To unsubscribe, send email to wx-users+***@googlegroups.com
or visit http://groups.google.com/group/wx-users
Steve Cookson
2014-06-27 17:28:21 UTC
Permalink
Hi David,
Post by David Foster
Is there a way to build and install a custom version of wx that doesn't use QuickTime? Alternatively, would it be feasible to alter wx such that it doesn't use QuickTime in the standard build?
I'm sure that if you compile wxWidgets with --disable-mediactrl, it'll
be fine.

However, that should not be necessary. wxMediaCtrl probably needs to
support newer API versions in all its supported media types.

In fact it could just standardise on GStreamer-1.0, which is x-platform,
which would reduce the ongoing maintenance burden.

Regards

Steve.
--
Please read http://www.wxwidgets.org/support/mlhowto.htm before posting.

To unsubscribe, send email to wx-users+***@googlegroups.com
or visit http://groups.google.com/group/wx-users
Loading...