Targeting older macOS SDKs with Xcode 12

We have a macOS app that supports macOS 10.12 and later.
We’re using a 2018 Mac mini running macOS 10.15.7 for the release builds with Jenkins.

In the last years and with older versions of Xcode we have always installed older macOS SDKs (using publicly available scripts) and used them to build against as we have run into several issues when building against the latest SDK version and only setting the deployment target to an older version.

With the latest version of Xcode this doesn’t seem to be possible anymore so we thought we’d just do it the “official” way then: targeting the most recent macOS SDK and only setting the deployment target.

When a user reported a bug with a release build now we sent him a debug build which was built on macOS 10.14.6 and Xcode 11 (targeting the 10.14 SDK) and the issue is gone. No code changes whatsoever. When he switches back to the official release version the issue returns immediately.

So I have to assume it has something to do with the version of macOS that is used to build against.

I have asked this question on the Apple forum and an Apple engineer answered that I should build against the latest SDK and hunt down the bug which admittedly feels wrong since it’s not there when building against the older SDK so I wouldn’t even know where to start looking.

How do you feel about this and what do you think is the way forward from here?

Thanks for your opinions!

use older SDK, and fix the plist in xcode that will make latest xcode use it anyway.

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Info.plist

Make sure that
MinimumSDKVersion
is set to 10.12

1 Like

Is it really that easy?
Wasn’t aware of that plist file setting!

Thanks! That seems to do the job even on Big Sur!

On Big sur the only issue is that the notarization doesn’t support 10.11 and older

Guess that’s due to the signing changes they made in 10.11. But I can live with that.
Thanks for the information though.