現在開発しているiOSアプリには、メインターゲットに加えて複数のエクステンションターゲットがあり、それぞれバラバラのバージョンが指定されているなど整理されていない状態だったため、プロジェクトのDeployment Targetのみ指定する形に修正しました。
しかし、これをやると意図しない挙動になるため要注意です。
Deployment Targetの設定
ここではプロジェクト、メインターゲット、テストターゲット、UIテストターゲットがあるものを例とします。
プロジェクトにはDeployment TargetとしてiOS13.0
を指定します。
一方、メインターゲットにはDeployment Targetを指定しないようにします。
この状態でアプリをビルドするとどうなるでしょうか?
使用するXcodeのバージョンは12.4
とします。
アプリのDeployment TargetはXcodeのバージョンに依存する
上記の状態でXcode12.4
でビルドした場合、アプリはiOS14.4
以上のバージョンでのみ動作します。
XcodeにはバージョンごとにiOSの特定のバージョンのSDKが同梱されています。
Xcode12.4
にはiOS14.4
のSDKが同梱されているので、ビルドしたアプリはiOS14.4
以上で動作することになります。
プロジェクトのBuild SettingsはターゲットのBuild Settingsに引き継がれる認識だったのですが、そうではないようです(項目によるのかな?)
Deployment Targetはプロジェクトとターゲットの両方に値を指定するようにしましょう。
参考
XcodeとiOS SDKの対応はこちらのサイトにわかりやすくまとまっています。
他の記事
他にこんな記事もあります。