Xcode:わかりやすい言語のターゲットとスキームとは何ですか?


204

ええ、タイトルはそれを言っています:-)彼らは平易な英語で何を意味しますか?Appleのウェブサイトにある説明が本当にわかりません。ターゲットの名前を変更する必要がありますが、それ以降は何も機能しないと思います。



回答:


309

ワークスペースとプロジェクトにも追加しました!

  • ワークスペース -1つ以上のプロジェクトが含まれます。これらのプロジェクトは通常、互いに関連しています
  • プロジェクト -コードやリソースなどが含まれます(これらに慣れます!)
  • ターゲット -各プロジェクトには1つ以上のターゲットがあります。
    • 各ターゲットは、そのプロジェクトのビルド設定のリストを定義します
    • 各ターゲットは、ビルド時に含める/使用するクラス、リソース、カスタムスクリプトなどのリストも定義します。
    • ターゲットは通常、同じプロジェクトの異なるディストリビューションに使用されます。
      • たとえば、私のプロジェクトには2つのターゲットがあります。「通常」ビルドと「オフィス」ビルドで、追加のテスト機能があり、いくつかのバックグラウンドミュージックトラックと、トラックを変更するためのボタンが含まれている場合があります(現在のように)。
      • クラスとリソースを追加するときに、それらをデフォルトのターゲットに追加することに慣れます。
      • どのクラス/リソースをどのターゲットに追加するかを選択できます。
        • 私の例では、オフィスビルドに追加された「DebugHandler」クラスがあります。
      • テストを追加すると、新しいターゲットも追加されます。
  • スキーム -スキームは、「ビルド」、「テスト」、「プロファイル」などを押したときに何が起こるかを定義します。
    • 通常、各ターゲットには少なくとも1つのスキームがあります
    • スキーム>スキームの管理に移動し、「今すぐスキームを自動作成」を押すと、ターゲットのスキームを自動作成できます。

正しく理解できたら試してみましょう...アプリをプログラミングして2つのターゲットを作成します。アプリストアにアップロードするものと、同じアプリの次のバージョンを既に開発しているもの。そして、スキームでは、たとえば、実行する両方のターゲットで1つのスキームとデバッグ用の1つのスキームを作成しますか?しかし、なぜ別のスキームが必要なのですか?私は... BJホメロスのことの利点を理解していなかった
MichiZH

FWIW、私は私の回答で説明するような追加のデバッグ機能を追加しない限り、リリースとデバッグに異なるスキームを使用しません。
James Webster

2
すばらしい説明仲間!!!
Sagar Kalathil 2016年

6
オフィスビルドの下部に音楽ボタンがあるというのはどういう意味ですか。実際のアプリには、Officeビルドでのみアクティブ化される追加のコードがありますか、それともMacで実行される音楽ですか?すみません、混乱しています
3366784

この種類は、各コンセプトの構成要素を定義しますが、各アイテムの目的は定義しません。私にとってそれはOPが求めていたものです。
オルーニー

66

ターゲットは、 Xcodeで「ビルド」を実行することによって作成された最終製品です。アプリ、フレームワーク、静的ライブラリ、単体テストバンドルなどが考えられます。それが何であれ、それは一般的に「ビルドされた製品」フォルダ内の単一のアイテムに対応します。

スキームは、あなたが一緒に動作することを目標のコレクションを表します。Xcodeでさまざまなアクション(実行、テスト、プロファイルなど)を選択するときに使用するターゲットを定義します。多くの場合、実行、アーカイブ、およびプロファイルアクションのメインアプリターゲットを使用するスキームが1つだけあり、テストアクションの単体テストターゲット。2つの関連アプリを構築している場合、同じ単体テストバンドルを使用するが、アプリターゲットが異なる2つのスキームがある可能性があります。

スキーム(Xcode 4で導入)の主な利点は、選択したターゲットを切り替えることなく、アプリの実行とユニットテストを切り替えることができることです。


61

私は視覚的な人間なので、概念を説明するために図を使用します。

複数のターゲットがある場合、それらはXcodeのRun、Test、Profileアクションと1対1で一致する可能性があり、この概念はスキームを定義します

ここに画像の説明を入力してください

ターゲットはあなたのバージョンであるプロジェクト、つまりターゲットが構築された時間の中に使用するクラス&リソースがわずかに異なります。プロジェクトには、個別の配布要件に対して複数のビルド時間設定を含めることができます。


7
この図は間違っているようです。スキームは特定のターゲットに関連付ける必要があります。スキーム内で複数のターゲットを設定できる場所はわかりません。
ブーン

6
@Boonいいえ、うっかりChoosyは正しいです。スキームエディターで、左側の「ビルド」アイテムをクリックします。右側の領域で「+」をクリックすると、このスキームにさらにターゲットを追加できます。必要に応じてボックスにチェックを入れます。これらのターゲットの実行可能ファイルは、実行可能ドロップダウンの他のアクション(実行、プロファイルなど)で利用できます。
オクルス2017年

これは良いことですが、スキームのビルド構成部分が欠けています。スキームは、アクション(実行、テスト、プロファイル)がターゲットとビルド構成(デバッグ、リリース、QA、製品など)の組み合わせにどのように一致するかのコレクションと考えています。
スティーブモーザー2018年

3

Workspace.xcworkspace)-複数のコンテナですprojects[概要]の次のステップとして作成されましたcross-project references

  • Workspace含まれているすべてschemesを含むprojects
  • Workspaceすべてのハンドルimplicit dependencies[概要]

観察:

  • これは、同じ内部の異なるプロジェクトでの作業に安全であるworkspaceとキャッチしませんCouldn't load Project.xcodeproj because it is already opened from another project or workspace
  • Cocoapods[概要]プロジェクトのworkspace作成場所での 作業Pods

Project.xcodeproj) -これはのためのコンテナであるtargetsscheme。コードファイル、リソースを定義します...

Target- PBXNativeTargetセクション。以下を生成する特定のビルド設定のセットを定義します。

  • Application target
  • Library and framework targets
  • Test
  • Aggregate[概要]。たとえば、Universal frameworkまたはを作成するために使用されますUmbrella framework

Scheme- Project'sXcodeでアクションの設定:実行テストプロファイル分析およびアーカイブSchemaすることができ、共有、CIであなたを助けているCarthage...とあります:

<project_path>/<project_name>.xcodeproj/xcshareddata/xcschemes

Dependency- Targets持つことができますdependencies。依存関係は、ソースリンクです。これらの依存関係は静的または動的にリンクできます[概要]それらには2つのタイプがあります。

  • Explicit Dependency[概要] -同じプロジェクトまたはネストされたプロジェクトにある依存関係のソースコード
  • Implicit Dependency[概要] -同じワークスペースの一部であるプロジェクトにある依存関係のソース/クローズコード。

[単語]

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.