JDK-8094274 : [Media] Use of QuickTime prevents Mac AppStore Submission
  • Type: Bug
  • Component: javafx
  • Sub-Component: media
  • Affected Version: 8
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2013-12-13
  • Updated: 2019-11-22
  • Resolved: 2014-10-06
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 8
8u40Fixed
Related Reports
Blocks :  
Relates :  
Description
GStreamer uses QuickTime, and that will keep a JavaFX app from being accepted in the Mac App Store.

Specifically, in 10.9 they deprecated QuickTime:
https://developer.apple.com/library/mac/releasenotes/MacOSX/WhatsNewInOSX/Articles/MacOSX10_9.html#//apple_ref/doc/uid/TP40013207-SW5
And use of deprecated features prevents Apple from approving the submissions.

This is a major problem for App Store support, and potentially a gating issue.

A possible work around is to build without gstreamer.
Comments
Fixed for 8u40 b09
08-10-2014

Changeset pushed: URL: http://hg.openjdk.java.net/openjfx/8u-dev/rt/rev/6b242a49e749 date: Mon Oct 06 09:32:41 2014 -0700
06-10-2014

Looks fine to me. +1
19-09-2014

Updated, hopefully final, webrev: http://cr.openjdk.java.net/~ddehaven/RT-34893/rt.2/ This webrev only contains fixes for the Windows and Linux build systems over the previous version, no code changes
19-09-2014

I've tested on Mac and now Linux (Ubuntu 14.04 LTS). I have a fix for Linux/Windows, waiting to be sure Windows builds but it's looking good so far. I will update the webrev when it's done.
18-09-2014

The prism and the Java portion of the media changes look fine to me, too. I will rely on Alexander and Kirill to review the native changes in media. It builds and runs fine on Mac 10.7.5 (which doesn't use the new AVF code, but falls back to the existing framework) for me. So I think the only remaining issue is to fix the media Makefile to exclude the mac-specific AVF code from the build on non-Mac platforms.
18-09-2014

I read the Prism code changes and didn't see any issues. I didn't test building/running it, though.
18-09-2014

I get the following build failure on Windows (and a similar failure on Linux). cl.exe -DWIN32 -D_WINDOWS -D_USRDLL -DJFXMEDIA_JNI_EXPORTS -DTARGET_OS_WIN32=1 -D_WIN32_WINNT=0x0500 -D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB -DGST_DISABLE_LOADSAVE -DGSTREAMER_LITE -D_WINDLL -D_MBCS -I../.. -I../../jni -I"C:/Program Files (x86)/Java/jdk1.8.0/include" -I"C:/Program Files (x86)/Java/jdk1.8.0/include/win32" -IC:/Users/kcr/javafx/8u-kcr/jfx/rt/modules/media/build/generated-src/headers -I../../../gstreamer/3rd_party/glib/glib-2.28.8/ -I../../../gstreamer/3rd_party/glib/glib-2.28.8/glib -I../../../gstreamer/3rd_party/glib/glib-2.28.8/gmodule -I../../../gstreamer/3rd_party/glib/glib-2.28.8/build/win32/vs100 -I../../../gstreamer/gstreamer-lite/gstreamer -I../../../gstreamer/gstreamer-lite/gst-plugins-base/gst-libs -I../../../gstreamer/gstreamer-lite/gst-plugins-base/win32/common -I../../../gstreamer/gstreamer-lite/gstreamer/libs -nologo -W3 -WX- -Gm- -EHsc -GS -fp:precise -Zc:wchar_t- -Zc:forScope -Gd -errorReport:queue -DNDEBUG -O2 -MD -Oy- -TP -c -FoC:/Users/kcr/javafx/8u-kcr/jfx/rt/modules/media/build/native/win/Release/obj/jfxmedia-jni/Locator/LocatorStream.obj ../../Locator/LocatorStream.cpp make: *** No rule to make target `/cygdrive/c/Users/kcr/javafx/8u-kcr/jfx/rt/modules/media/build/native/win/Release/obj/jfxmedia-jni/platform/gstreamer/GstEqualizerBand.obj', needed by `/cygdrive/c/Users/kcr/javafx/8u-kcr/jfx/rt/modules/media/build/native/win/Release/jfxmedia.dll'. Stop. make: *** Waiting for unfinished jobs.... LocatorStream.cpp make: Leaving directory `/cygdrive/c/Users/kcr/javafx/8u-kcr/jfx/rt/modules/media/src/main/native/jfxmedia/projects/win' :media:buildWinNative FAILED FAILURE: Build failed with an exception. * Where: Build file 'C:\Users\kcr\javafx\8u-kcr\jfx\rt\build.gradle' line: 2226 * What went wrong: Execution failed for task ':media:buildWinNative'. > Process 'command 'make'' finished with non-zero exit value 2 * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. BUILD FAILED
18-09-2014

Here is the webrev (copied from the review request e-mail) http://cr.openjdk.java.net/~ddehaven/RT-34893/rt.1/
17-09-2014

RT-38074 has been pushed, future builds of JavaFX (starting in 8u40) will have libjfxmedia_qtkit.dylib. Simply removing that file should allow MAS submission. Note that media will not be completely disabled. The GStreamer pipeline has a VDA decoder for H.264 and uses CoreAudio to decode MPEG audio and AAC, but it runs with the limitation that if hardware is not available it will fail (and there will be no fallback). Additionally, HTTP live streaming will not be available as it's not enabled on the Mac for the GStreamer platform. Both of these issues will be addressed when AVFoundation support is finished.
05-08-2014

Adding prism reviewers as watchers since this will touch prism, including the D3D and ES2 renderers
31-07-2014

Note that this JIRA is targeted for 8u40 at which time there will be a solution for applications that use FX media to go into the Apple app store.
27-05-2014

Yes until FX uses a different Apple API ��� that will also be deprecated one day by Apple for no good reason ��� but hopefully at that point, we'll be on to chip implants or thought computers!
26-05-2014

Just so we're clear removing the references is a solution for non multimedia apps thus media apps are out of luck?
26-05-2014

If you remove the media shared library that references QuickTime and do not attempt to run Media in your application, you should be ok (but I have not tried it). These three shared libraries are used for media: libglib-lite.dylib libgstreamer-lite.dylib libjfxmedia.dylib I am guessing that only libjfxmedia.dylib references QuickTime and this expression seems to confirm it: otool -L libjfxmedia.dylib | grep QTKit If no shared library references QuickTime, then the Apple tools that sniff your app for references to libraries that you should not reference will not find a reference (because none is there).
26-05-2014

My company is unable to submit it's media app to the appstore and would like to know if there's a work around? I am currently using jdk-1.8u5 and it's a bit disquieting.
26-05-2014

Embedded does not have media or web so it should be easily doable.
13-12-2013

Sounds good. Another alternative if 8u20 is too tight a fit is an analysis from those most familiar with the code if we could remove the library file from the JRE at packaging time and if it would be stable if the JFX app doesn't use media. i.e. is the library loaded eagerly or lazily and if lazy at what trigger points.
13-12-2013

Let's see what Kirill and other media people have to say.
13-12-2013

Is 8u20 doable? It will impact some packager deliverables if it slips past then.
13-12-2013

This is a major issue however, is it unlikely that we will fix it for jdk8. It would require that we ship a subset or break up our jars and dlls so that they could be deleted (or some other fix) that seems out of scope at this point.
13-12-2013

Learned about this via Louis Zuckerman on twitter: https://twitter.com/pragmaticism/status/411299845136068608
13-12-2013