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:
I have inspected MobileVLCKit and also the sources of libVLC and there I found: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
- 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