Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

iTunes Connect rejects Mac binary due to QTKit dependency #5701

Closed
dtaylorus opened this issue May 5, 2017 · 24 comments
Closed

iTunes Connect rejects Mac binary due to QTKit dependency #5701

dtaylorus opened this issue May 5, 2017 · 24 comments

Comments

@dtaylorus
Copy link
Contributor

My Mac App Store submission was rejected with the following response from iTunes Connect:

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

I don't have any references to QuickTime in my project, so I assume this comes from a MonoGame dependency?

I'm using the MonoGame DesktopGL framework with native references to sdl2 and openal.

If this is a MonoGame issue, some guidance as to how to build a game that can pass the Mac App Store submission criteria would be appreciated.

Thanks!
-David

@tomspilman
Copy link
Member

@dellis1972 @mrhelmut @cra0zy ?

@harry-cpp
Copy link
Member

We are currently using QTMovieView instead of AVPlayerView to play videos on Mac.

PS. I can't help with fixing this since the only macOS I have is in a VM, and it does not like working with GL stuff.

@tomspilman
Copy link
Member

We are currently using QTMovieView instead of AVPlayerView to play videos on Mac.

This seems like the possible culprit here.

@dtaylorus - Are you using the video player? If not can you remove it from your project and see if the issue goes away?

@dtaylorus
Copy link
Contributor Author

@tomspilman I'm not using the video player.

Just to clarify, are you saying I should do my own build of the MonoGame binaries and remove all of the QTKit references?

Or is there some way to remove these references without a custom build?

Thanks!

@dellis1972
Copy link
Contributor

@dtaylorus are you using the Xamarin.Mac dll or the DesktopGL one? The DesktopGL should not contain any references to QTKit since its only the Xamarin.Mac video player that uses it. You can ship DesktopGL stuff on the Mac store because I have done that myself.

Also are you on MonoGame 3.6?

No idea why but if I reply to this thread via email , they are not showing up :/

@harry-cpp
Copy link
Member

@dellis1972 Should we maybe completely drop the MonoMac/Xamarin.Mac platforms if DesktopGL works for store?

@dellis1972
Copy link
Contributor

dellis1972 commented May 8, 2017 via email

@harry-cpp
Copy link
Member

harry-cpp commented May 8, 2017

specific features like Game centre etc

Since I don't know too much about Mac I have to ask, why couldn't it be used with DesktopGL?

@mrhelmut
Copy link
Contributor

mrhelmut commented May 8, 2017

Aren't GameKit features out of the scope of MonoGame? (just asking, but I do understand well that having Xamarin.Mac support still is quite useful in that regard since Xamarin.Mac is the only option to access GameKit API because there is no open source binding for GameKit).

@dellis1972
Copy link
Contributor

dellis1972 commented May 8, 2017 via email

@dtaylorus
Copy link
Contributor Author

@dellis1972 I'm using the DesktopGL version of MonoGame 3.6. Specifically, the binaries that come with the 3.6 installer, not the binaries from NuGet.

What are your compile settings? Specifically, what version of the .NET Framework, and what linker settings?

Good to know you've shipped in the Mac Store!

@iamthefaker
Copy link

iamthefaker commented May 15, 2017

If you add extra param into your project build (not MonoGame) I think this might help. I think this is a Xamarin issue, not a MonoGame issue.

image

@dtaylorus
Copy link
Contributor Author

@dellis1972 Can you please share the build settings you used to submit to the Mac Store?

I've tried every combination I can think of and there's still some QTKit reference I can't eliminate.

Also, I'm unable to link any assemblies. Even linking SDK assemblies only results in a build failure related to System.Drawing.

I sure would appreciate knowing your secret to shipping a MonoGame app in the Mac Store!

@dellis1972
Copy link
Contributor

dellis1972 commented May 18, 2017 via email

@dtaylorus
Copy link
Contributor Author

@iamthefaker Thank you! I can confirm that with the --registrar:dynamic switch, the app passes Mac Store validation tests and with no other change, removing the switch causes validation to fail with the deprecated QTKit reference.

So as you said, it seems this is a Xamarin issue, not a MonoGame issue.

@iamthefaker
Copy link

--registrar:dynamic
doesn't seem to work anymore.
Now running VS for Mac and latest builds of Xamarin.mac and so on.
And the QTKit dependency rejection has come back, regardless of trying a number of different
mmp arguments.

As per:
https://forums.xamarin.com/discussion/101776/apple-no-longer-accepts-submissions-of-apps-that-use-quicktime-or-qtkit-apis

@dtaylorus
Copy link
Contributor Author

dtaylorus commented Nov 2, 2017 via email

@tomspilman
Copy link
Member

@dellis1972 ?

@iamthefaker
Copy link

It looks like Chris Hamons' (from Xamarin) comment on 20th October may be the key here.
https://forums.xamarin.com/discussion/comment/302820/#Comment_302820
Quote:

  • Fundamentally you are in a broken position, one of your dependencies is not fully loadable.
  • The nature of the JIT is letting you get away with that, but it breaks all forms of linking.
  • Xamarin.Mac has bindings to QTKit that we can't remove until the next API break (if it occurs)
  • Linking is the way to remove the bindings you don't use
  • Until you fix the dependency, either by recompiling it, removing it, or hiding it's usage, you can't link.

@dellis1972
Copy link
Contributor

This was merged into develop a while back #5942

It removes our dependency on QTKit. So if you are using the 'development' version I have no idea where this QTKit dependency is coming from.

@dtaylorus
Copy link
Contributor Author

dtaylorus commented Nov 2, 2017 via email

@dellis1972
Copy link
Contributor

@dtaylorus do you have a DesktopGL app? If so as long as you are not using any Xamarin.Mac API's you can ship that. Its just a question of packaging.

I have a nuget in alpha [1] which will generate a Mac .app package for you and use https://github.com/MonoGame/MonoKickstart.

To use Build your DesktopGL app in release mode then (on a Mac)

msbuild <project> /p:Configuration=Release /t:BuildGamePackage /p:PackageTargetPlatforms=MacOS

You should get a .app package in your output directory.

Note it is still in development so if you have any unusual content stuff (i.e the content is not in a "Content" directory) it might no package everything. But please contact me on Gitter if you want help.
[1] https://www.nuget.org/packages/InfinitespaceStudios.MonoGame.Packaging/0.0.6-alpha

@dellis1972
Copy link
Contributor

@dtaylorus you will need to manually sign the package and create a .pkg but that is documented on the apple developers site.

@dtaylorus
Copy link
Contributor Author

dtaylorus commented Nov 3, 2017 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants