BUG: App using VLCKit rejected for iOS/tvOS 13

This forum is about all development around libVLC.
ssbmaccom
Cone that earned his stripes
Cone that earned his stripes
Posts: 184
Joined: 26 Nov 2015 15:21
Operating System: Mac OS, iOS, tvOS

BUG: App using VLCKit rejected for iOS/tvOS 13

Postby ssbmaccom » 26 Sep 2019 18:10

Hi,

I tried to submit a new TestFlight build of my App linked against VLCKit/libVLC, but the binaries for iOS and tvOS got rejected by Apple:
Dear Developer,

We identified one or more issues with a recent delivery for your app, "vuplusTV" 1.2.1 (25). Please correct the following issues, then upload again.

ITMS-90338: Non-public API usage - The app references non-public symbols in vuplusTV iOS: _timespec_get. If method names in your source code match the private Apple APIs listed above, altering your method names will help prevent this app from being flagged in future submissions. In addition, note that one or more of the above APIs may be located in a static library that was included with your app. If so, they must be removed. For further information, visit the Technical Support Information at http://developer.apple.com/support/technical/

Best regards,

The App Store Team
I have inspected MobileVLCKit and also the sources of libVLC and there I found:

- VLCKit/libvlc/vlc/compat/timespec_get.c is implementing timespec_get function (not in MobileVLCKit!!)
- VLCKit/libvlc/vlc/include/vlc_fixups.h is declaring timespec_get

- VLCKit/libvlc/vlc/src/misc/mtime.c is calling timespec_get
- VLCKit/libvlc/vlc/src/misc/threads.c is calling timespec_get
- VLCKit/libvlc/vlc/src/video_output/snapshot.c is calling timespec_get

I have not yet built it and obviously not the 3rd party items in contrib, so I don't know, if any of these libraries are referencing timespec_get.

So - as now unfortunately Apple decided, that timespec_get() is a "private" function - libVLC need to use its internal implementation and rename it, so there is no conflict with timespec_get symbol (not sure if a simple #define timespec_get TIMESPEC_GET would solve the issue after timespec.c is added to the build.

I am quite sure it is not possible to remove the modules calling timespec_get without breaking any functionality.

Well - worth to mention, it is a bit urgent ;-)

ssbmaccom
Cone that earned his stripes
Cone that earned his stripes
Posts: 184
Joined: 26 Nov 2015 15:21
Operating System: Mac OS, iOS, tvOS

Re: BUG: App using VLCKit rejected for iOS/tvOS 13

Postby ssbmaccom » 26 Sep 2019 19:58

Oh... I found an ugly workaround that at least "fooled" the automated AppStore Review for TestFlight.
I added timespec_get.c to my App so the linker will resolve the symbol internally in the App and not in libc. I checked the resulting binaries and timespec_get is not shown as undefined anymore, only the internal implementation is show as "exported" symbol - but this gets stripped when building for AppStore upload.

Anyway we need a more reliable solution.

The Review for AppStore Release is more detailed and restrictive - my solution only fools the bot that is performing the automated checks for TestFlight releases.
I am afraid that the App will fail in the final Review before release


Return to “Development around libVLC”

Who is online

Users browsing this forum: No registered users and 14 guests