BambooHero

iOSアプリ開発と株式投資をメインに色々書きます

iOSのDeployment Targetはプロジェクトとターゲット両方に値を指定しないといけない

f:id:bamboohero:20210520005255p:plain 現在開発しているiOSアプリには、メインターゲットに加えて複数のエクステンションターゲットがあり、それぞれバラバラのバージョンが指定されているなど整理されていない状態だったため、プロジェクトのDeployment Targetのみ指定する形に修正しました。

しかし、これをやると意図しない挙動になるため要注意です

Deployment Targetの設定

ここではプロジェクト、メインターゲット、テストターゲット、UIテストターゲットがあるものを例とします。

プロジェクトにはDeployment TargetとしてiOS13.0を指定します。

f:id:bamboohero:20210422181850p:plain

一方、メインターゲットにはDeployment Targetを指定しないようにします。

f:id:bamboohero:20210422182725p:plain

この状態でアプリをビルドするとどうなるでしょうか?

使用する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の対応はこちらのサイトにわかりやすくまとまっています。

xcodereleases.com