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.