8
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

[iOS]XcodeのSchemeとTargetとConfiguration

Scheme, Target, Configuration

ビルド時の目的に応じて、設定値や処理を分けたいときに使える機能。

  • iOSアプリが通信するバックエンドシステムのURLが環境毎に異なる
  • アプリのログ出力を開発フェーズ毎に分けたい(開発時、テスト時、本番リリース時)

それぞれの概念がよくわかっていないので調べて、自分がしっくりくる言葉に落とし込んでみる。

それぞれの関係を表したイメージ図

IMG_7188.jpg

Schemeとは?

ざっくりいうと、

ビルドを伴う5つの処理(Run, Test, Profile, Analyze Archive)それぞれにおいて、採用する「Target」とTarget内の「Configuration」を紐付けてまとめてラベル付けしたもの

Xcode4から登場した機能である。
Xcode3までは、ビルド・実行に関する大量の設定項目をビルドの目的に応じて設定、切り替えて実施していたが、
目的に応じた設定が異なる箇所は少ない(=ほとんどの部分は共通化できる)じゃんということで生まれた機能らしい。

スキームの設定画面(Product > Scheme > Edit Scheme...)では

「Build」「Run」「Test」「Profile」「Analyze」「Archive」

と並んでいるが、これらは別に上から順に実行されるわけではない。

スクリーンショット 2020-11-24 18.00.09.png

実際には、ユーザーがどれを実行したいかを選択する(Product > Run/Test/Profile/Analyze/Archive)ことになる。

スクリーンショット 2020-11-24 18.01.58.png

意味合いは以下の通り。

  • Build: ビルド(=ソースコードのコンパイル)。
  • Run: Schemeで指定しているTargetをConfigrationの値でビルドし、選択した端末orシミュレータで実行する
  • Test: Schemeで指定しているTargetをConfigrationの値でビルドし、ユニットテストを実行する
  • Profile: Schemeで指定しているTargetをConfigrationの値でビルドしInstrumentsを使いつつ選択した端末orシミュレータで実行する
  • Analyze: Schemeで指定しているTargetをConfigrationの値でビルドし、静的解析を行う
  • Archive: Schemeで指定しているTargetをConfigrationの値でビルドし、配布可能な形式のファイル(.ipa)を生成する。

Target

ビルド時の設定リスト。
「Signing & Capabilities」, 「Build Settings」の各設定項目については、デフォルトで「Debug」, 「Release」というConfigurationが用意されており、それぞれの値を設定できる模様。

Signing & Capabilities
スクリーンショット 2020-11-24 15.53.07.png

Build Settings
スクリーンショット 2020-11-24 15.49.39.png

Targetの単位は、「アプリ自体」「ユニットテスト用アプリ」「UIテスト用アプリ」というふうに大きく設定が異なる場合にTargetを分けるといいらしい。

Configuration

デフォルトではDebugとReleaseが用意されており、同一Target内での設定値の出し分けに使う。

参考

What are “analyze”, “test” and other checkboxes in “Build” part of scheme in Xcode?
All About Schemes
Xcode Profile vs Analyze
What is difference between build and archive in Xcode

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
8
Help us understand the problem. What are the problem?