We’ve been having some issues getting our app validated. It’s an extremely complex app with a lot of pieces. We used to build all the C++ code directly into the app, but for various reasons now another team is building that as a framework, and one of their dependencies, OpenCV, is currently packaged as a bare .dylib
. That should be allowed, but App Validation fails with:
I went down a lot of paths trying to understand what’s going on. The error message is initially misleading (dylibs don’t have an Info.plist, for example), and LC_VERSION_MIN
is not a loader command (LC_VERSION_MIN_IPHONEOS
and LC_VERSION_MIN_MACOS
are).
From what I’ve been able to gather so far:1 As of iOS 12 (and I’m not sure which macOS version), the loader looks for LC_BUILD_VERSION
instead of LC_VERSION_MIN*
. Our library has LC_BUILD_VERSION
defined:
$ otool -l libopencv_world.4.1.1.dylib | grep -A4 VERSION
cmd LC_BUILD_VERSION
cmdsize 32
platform 2
sdk 13.2
minos 12.0
This implies that App Store Validation is not looking for the right meta information.
But the Swift ABI compatibility libraries provided by Xcode use the older LC_VERSION_MIN_IPHONEOS
:
$ otool -l OurApp.app/Frameworks/libswiftCore.dylib | grep -A4 VERSION
cmd LC_VERSION_MIN_IPHONEOS
cmdsize 16
version 7.0
sdk 12.2
I’ve burned a Developer Technical Support incident trying to get this question answered, but have yet to receive a response.