My app uses a 3rd party framework built for iOS 13.1 for some functionality that will only be available to users with A12 or newer chipsets. We planned to disable access to that functionality on older devices at runtime and do not need to load/call any functions in the related framework.
The issue is that including the framework in the app causing crashes on iOS 12.5 and earlier with
dyld: Symbol not found: ___chkstk_darwin
Referenced from: /private/var/containers/Bundle/Application/.../<framework> (which was built for iOS 13.1)
Expected in: /usr/lib/libSystem.B.dylib
which makes sense to me but I'm hoping to work around it :)
I have reached out to the framework developers to look at building for a lower minimum OS version but they rely on features that came in with iOS 13 so are not sure if it can be done, how long it might take, or when they could look at it..
Since the framework is not needed on iOS 12.5 or earlier, looked into weak linking against it. This works about halfway. If I weak link the framework and don't embed it in the app, things work as I need. If I include it, I get the same crash as above.
Hoping for info/help with the following possibilities (if possible):
- Is there a way to ignore specific undefined symbols without modifying the framework?
- Is there a way to weak link that covers this case but I was doing it wrong?
- Is there a way to ship the impacted framework only on iOS 13 and above, but from the same listing in the app store?
Any other options I'm not aware of ?