【Xcode】OS version lower than deployment target が出て実機起動しない場合

Xcode (13.3.1)のバージョンで動作確認しています。

はじめに

今日はXcodeの勉強していきます。

シミュレーターで動いたのでいざiPhone実機で起動しようかと

原因

実機のOSが Build Settings で設定している iOS Deployment Target より低いためです。

iOS Deployment Target は何?

iOS Deployment Targetはアプリが動作する最低OSの数値です。

つまりこの値より低いOSでアプリをインストールすることができません = 起動できない

リリースした場合どうなるかというとAppStoreでそのアプリがダウンロードができません。

iOS Deployment Target の変更方法

概要

PROJECTとTARGETSの数だけiOS Deployment Targetを設定できます。

PROJECTは共通設定、TARGETSは個別設定といった見方でいいと思います。

なのでTARGETSが優先されます

PROJECTを変えると全TARGETSの値が変わります
(変わらないケースがあります。それ後ほど)

PROJECT で iOS Deployment Targetを変える方法

PROJECTのところをクリックしてinfoタブを開きます。

この数値をプルダウンから選択します。

新規でプロジェクト作った後にこれをすれば大体OKなはず。

TARGETS で iOS Deployment Targetを変える方法

TARGETの場合は少し手順が違ってまして、BuildSettingsタブを開きます。

iOS Deployment Targetという項目を見つけてプルダウンから変更できます。

PROJECT変えてもTARGETSが変わらないケース

PROJECTは共通設定なのでTARGETSも同時に変わるというのが基本動作ですが例外がありました。

TARGETS側で一度でも変更してしまうとPROJECT側の変更が反映されなくなります

iOS Deployment Target以外の項目も同様な挙動をしますので注意が必要です。

とはいえ優先されるのはTARGETSなのでPROJECTは設定しなくてもいいかもしれません。

iOS Deployment Target の目安

前提としてiOS Deployment Targetの選択できる値はXcodeのバージョンに依存しています。

Xcodeが最新版だとiOS Deployment Targetで選べる最大値が最新iOSの値になっています。

ここからが重要なのですが、

新規プロジェクト作成するとiOS Deployment Targetが選択可能な最大な値になってます。
(これが罠)

しかし実際の案件だと最大の数値にすることは絶対にありえません。

その理由は、

最新OSじゃないと遊べない => アプリがインストールされない => 儲からない からです。

じゃあiOS Deployment Targetはどの値にすればいいかですが、

特定のOS以上でしか使えない機能や処理をメインで使っているアプリならばそのOSの値を設定するでいいと思います。

とはいえ少なくともメジャーバージョン - 1 ぐらいにしないとそもそもインストールできるユーザーが3割ぐらいは減ります。

メジャーバージョン -2 ぐらいでアプリの構造的に問題ないのであればそれがベターだと思います。

お仕事でこの最低OSを決めるときの指標として OSバージョンのシェア率 があると思います。

特に顧客や上司に説明するときになんとなくが通用しないケースがあるので、そういった時に数値で説得力を持たせるしかありません。

シェア率を出してくれてるサイトもたくさんありますので、そういったところで数値を確認して決めるのもいいと思います。

gs.statcounter.com

おわりに

最後まで見ていただきヘペトナス!

読者登録・Twitterのフォローもお願いします。