くま's Tech系Blog

基本的には技術で学んだことを書き留めようと思います。雑談もやるかもね!

iOSアプリのビルドのターゲット分けを行う

今回はiOSアプリのビルドのターゲット分けについて記載しようと思います。

例えば、開発環境と本番環境で処置を分けたい場合やAPIのURLを分けたい場合があると思います。

そんなときに1つのプロジェクトで複数の環境を管理するためにターゲット分けを行います。

ターゲットの作成

まずはターゲットの作成を行います。

下記のように既存のターゲットを右クリックしてDuplicateを選択してターゲットを複製します。

f:id:kumaskun:20210328213103p:plain

ターゲットを複製するとinfo.plistファイルも複製されるので、必要に応じて削除しましょう。(1つのファイルで管理する方が楽だと思います)

設定の追加

次に、Other Swift Flags-D TARGET名を設定します。

この値はプログラム内でTARGET毎に処理を切り替えたい場合に、どのTARGETでビルドされているかを判定するために使います。

Build SettingのOther Swift FlagsにTARGET名を定義します。

f:id:kumaskun:20210405231207p:plain

定義したTARGET名で下記のように条件分岐を行うことができます。

#if DEVELOP
//
#elseif STAGING
//
#endif

Schemeの設定

各TARGETが設定できたら、起動のためのSchemeを作成します。

Schemeを作成することでターゲットごとにビルドすることができます。

まず、Xcode左上のScheme名のところからManage Schemesを選択して、Schemeの一覧を表示します。

f:id:kumaskun:20210405232003p:plain

表示したときに名前が複製したときのものになっている可能性があるので、下記の赤枠で追加・削除することができるのでターゲットを修正しましょう。

f:id:kumaskun:20210405232230p:plain

f:id:kumaskun:20210405232322p:plain

補足

今回のように手間をかけなくてもプロジェクトを新規作成した場合にはDebugReleaseの2種類のターゲットが作られます。

f:id:kumaskun:20210405232621p:plain

なので、下記のようにソースコードで分岐は可能です。

#if Debug
//
#elseif Release
//
#endif

ただ、下記のような場合はターゲット分けの方がやりやすいので、個人的にはおすすめです。

・アプリに含めるリソースを変えたい

・Bundle IdentifierをTARGET毎に変えたい

・ホーム画面に表示されるアプリ名をTARGETによって変えたい