5.3 以降の Unreal Engine (UE) では、標準 Xcode アプリ プロジェクトとの整合性を高めるために、Unreal Engine の Xcode プロジェクト ワークフローを更新しています。 新しいプロジェクト設定は Xcode デベロッパーの組織および作業の質を高め、Xcode 内のツールへのアクセスを提供し、次のような共同デザインやプロビジョニングを効率化しています。
自動コード署名
利用資格の管理
.plistファイルを編集するファイル標準 Xcode フレームワークの処理
このページでは、以前のバージョンから UE 5.3 以降 (5.3+) に移行するユーザー向けに、変更点をまとめています。
前提条件
更新された Xcode ワークフローは UE 5.3 以降で使用可能で、デフォルトで新しいプロジェクトに対して有効になっています。 ただし、手動で有効にする必要がある場合、次の手順に従います。
エンジンのインストール ディレクトリを開き、「
Engine/Config/BaseEngine.ini」を開いて、必ず次のコンフィグ変数を設定します。Engine/Config/BaseEngine.ini
C++[/Script/MacTargetPlatform.XcodeProjectSettings] bUseModernXcode=trueエンジンとプロジェクトの両方の Xcode のプロジェクト ファイルを再生成します。 UE のソース ビルドを使用している場合、エンジンのインストール ディレクトリで
GenerateProjectFiles.commandスクリプトを実行し、UE のソース コード用にプロジェクト ファイルを再生成します。 プロジェクトのディレクトリに 3 つの Xcode ワークスペース ファイルが表示されます。UE5 (Mac).xcworkspaceUE5 (TVOS).xcworkspaceUE5 (IOS).xcworkspace
これで新しい Xcode 設定を使用する準備ができました。 作業していました次のセクションでは、古いプロジェクト設定と比較した新機能について説明します。
プロジェクト、スキームおよびビルド コンフィギュレーション
以前は、UE Xcode プロジェクトでは、スキームに基づいてターゲットとビルド コンフィギュレーションを結合していました。 たとえば、単一のプロジェクト (MyProject) で、ユーザーにはエディタのターゲットの開発ビルドをビルドする「Development Editor」スキームがありました。
UE 5.3 以降では、ターゲット タイプごとに別々の Xcode プロジェクト (同じ Xcode ワークスペース内) を提供しています。 たとえば、「MyProject」というタイトルのプロジェクトの Xcode ワークスペースには、MyProjectEditor、MyProjectGame、MyProjectClient、および MyProjectServer に別々のプロジェクトがあります。
各ターゲットにあるのは、サポートされているビルド コンフィギュレーションのみです。 たとえば、ほとんどのエディタはテストまたはシッピング コンフィギュレーションをサポートしていないため、これらをエディタのプロジェクトでは使用できません。
更新されたワークスペースには多数のスキームがあります。 これらを確認し、[Filter (フィルタ)] と [Recent (最近)] セクションを使用して、必要に応じてリストを絞り込みます。
プラットフォームごとのワークスペース
以前は、UE でプロジェクト ファイルを生成すると、Apple の各プラットフォームのターゲットが含まれるモノリシック ワークスペースが 1 つ作成されていました。
UE 5.3 以降では、UE でプロジェクト ファイルを生成すると、Apple のプラットフォームごとに別々のワークスペースが作成されます。
これにより、ワークスペースとプロジェクトが簡素化します。Xcode で複数のワークスペースを開くことができるため、Command + ` (バッククォート) を押すことで、プラットフォーム間で切り替えることができます。
各ワークスペースにはプラットフォームをサポートするターゲットしか含まれていないため、iOS および tvOS で使用できるスキームは少なくなります。 これらには UnrealEditor ターゲットがありますが、正常にビルドすることはできません。 これらのターゲットは、ソース コードを検索できるようにするために存在しています。
自己完結型のアプリ
以前は、UE では iOS、iPadOS、および tvOS アプリを実行するために必要なすべてのデータがそれぞれの「.app」ファイルにバンドルされ、自己完結型になっていました。 ただし、macOS プロジェクトでは、「.app」、「Saved/Cooked/Mac」ディレクトリ、および Engine ディレクトリとプロジェクト ディレクトリの他の場所間でデータを分けていました。
UE 5.3 以降、すべての Mac プラットフォームで同じワークフローを使用し、必要なデータを 1 つの場所に集め、これを、手動または Xcode で実行できる .app にバンドルしています。 これを行うには、クック処理でステージ ステップを使用します。
エディタ ビルドはクックされておらず、ルーズ フォルダに含まれています。
パッケージ化と配布
macOS と iOS/tvOS/iPadOS のパッケージ化処理は、完全に相互に一貫性があります。
.ipa ファイルは macOS では不要で、Windows でのみ使用されるため、UE では iOS の .ipa ファイルが自動的に生成されなくなりました。
分布
Distribution モードでは、ディストリビューション証明書を使用して共同デザインしなくなりました。 代わりに、標準 Xcode アーカイブ (「.xcarchive」) が作成されます。これを使用して App Store や自分のチームなどさまざまな場所に「.app」を配布できます。 配布ビルドを作成すると、Xcode によって「.dSYM」ファイルも生成され、Xcode アーカイブに追加されます。これはクラッシュのデバッグに便利で、Apple に送信してライブ クラッシュをデバッグできます。 アプリを Apple にアップロードして送信するときには、「.dysm」ファイルとアプリを送信します。
「.dSYM」の生成には数分かかります。
正常にパッケージ化するには、Unreal Editor の [プラットフォーム] > [プロジェクトのパッケージ化] をクリックするか、-package -clientconfig=Shipping を BuildCookRun コマンドラインに追加します。
配布用にパッケージ化するには、[プロジェクト設定] の [配布] チェックボックスを選択するか、-package -clientconfig=Shipping -distribution を BuildCookRun コマンドラインに追加します。
または、Xcode で [製品] > [アーカイブ] をクリックします。
Xcode では、標準フローを使用して、「Staged」ディレクトリとコード署名フレームワークへの取り込みを含む「.xcarchive」ファイルを生成します。 スキームを開発に設定している場合でも、シッピング コンフィギュレーションが使用されます。
Xcode でアーカイブを使用している場合、[Archives] ウィンドウが自動的に開き、新しいアーカイブが選択されます。 他の UE メソッドを使用してこれを作成する場合、[ウィンドウ] > [オーガナイザー] をクリックして手動でウィンドウを開き、プロジェクトと左上部の [アーカイブ] を選択する必要があります。
アーカイブ] ウィンドウの右側にあるボタンを使用して、アプリを検証または配布します。 これを使用して、各オプションのプロンプトに従い、内部で使用するための iOS 版の「.ipa」ファイルを作成します。 App Store の検証/配布に対して、appstoreconnect.apple.com でアプリのエントリを作成する必要があります。
アプリを配布または有効化するためのプロンプトでは、ディストリビューション証明書を選択するか、他のプロビジョニング手順に従うことが必要になる場合があります。 詳細については、Apple のドキュメントを参照してください。
macOS でアプリのディスプレイ ネームを設定する
アーカイブされたビルドを作成するときには、アプリの表示名は アプリの Mac .app の名前です。 配布用にパッケージ化する場合 (または Xcode の [アーカイブ] メニューを使用する場合)、表示名は、Finder を使用するときにユーザーに表示される .app の名前になります。 これが設定されていない場合、.appは「.uproject」ファイルと同じ名前になります。 UE 5.3.2 以降で表示名を変更するには、「MacEngine.ini」ファイルを開いて、ApplicationDisplayName コンフィグ変数を設定します。
MacEngine.ini
[Xcode]
ApplicationDisplayName="Friendly Application Name"ApplicationDisplayName は iOS で使用されるバンドル表示名ムと同じではないため、MacOS と iOS の両方で実行されるアプリに対してこれらを個別に設定する必要があります。
コンテンツ/ブループリントのみのプロジェクト
コンテンツのみ (またはブループリントのみ) のプロジェクトは Xcode プロジェクトまたはビルド ターゲットのソース ファイルがないため、プロジェクト固有のデータと組み合わせて、エンジンから汎用の UnrealGame ターゲットを再利用してビルドを作成します。
標準 Xcode プラクティス
更新された Xcode ワークフローでは Xcode を使用して、次のものを含め、標準 Xcode ワークフローに従ってできるだけ多くのコンポーネントを処理します。
共同デザイン。
「
.plist」ファイル。利用資格ファイル。
フレームワーク。
共同デザイン
以前は、iOS/iPadOS/tvOS のみで共同デザインが必要でした。 2023年以降も、Apple では macOS の共同デザインが必要です。 更新されたワークフローでは、デフォルトですべてのプラットフォームで Xcode の自動コード署名を使用します。
自動共同デザインを使用するには、次の手順に従います。
Xcode で Apple Developer アカウントにログインします。
[Project Settings] を開いて [Platforms] > [Xcode Projects (Xcode プロジェクト)] を見つけ、次のプロパティを設定します。
| 設定名 | CVar | 説明 |
|---|---|---|
Use Modern Code Signing (最新のコード署名を使用) |
| UE プロジェクトの自動共同デザインを有効にします。 次の 2 つの設定が必要です。 |
Modern Signing Prefix (最新の署名プレフィックス) |
| 企業のリバース ドメイン名。 例: |
Modern Signing Team (最新の署名チーム) | `ModernSigningTeam | 署名時にアプリケーションが使用するチーム ID。 これは、Xcode の [Signing and Capabilities (署名および機能)] セクションのチーム ID と同じです。 詳細については、以下の「チーム ID を検索する」を参照してください。 |
チーム ID を検索する
[最新の署名チーム] 設定のチーム ID を確認するには、Apple Developer ページを開き、アカウントにログインし、[メンバーシップの詳細] をクリックします。 チーム ID が表示されます。
.plist ファイル
すべてのアプリで「.plist」ファイルを追加する必要があります。 最終的な「.plist」は、通常、Xcode プロジェクト設定に基づいて Xcode で変更される部分 (テンプレート) から作成されます。 これは、UE が生成する Xcode プロジェクトのために、複雑な処理になる場合があります。
更新された Xcode ワークフローでは、「.plist」ファイル処理に対する高度な制御を提供しています。 さらに、Xcode で .plist 設定を編集することは現在サポートされていません
デフォルトでは、.plist 設定を編集すると、iOS の変更が失われます。 詳細については、後述の「MacOS と iOS」のセクションを参照してください。
テンプレートと事前作成
UE で生成された Xcode プロジェクトから設定を使用して、アプリの .plist を Xcode でファイナライズすることをお勧めします。 ただし、UE では事前作成された「.plist」ファイルもサポートしています。このファイルは Xcode によって変更されません。 これは高度な機能であるため、Xcode のプロジェクト設定には表示されず、コンフィグ ファイルで編集する必要があります。 手順については、以下の「事前作成された .plist の使用」を参照してください。
プロジェクト設定の .plist 設定 (Mac Target Info.plist と IOS Target Info.plist 項目) では、デフォルトのテンプレート .plist またはまたは独自のカスタム テンプレート .plist を指定できます。
Template.plist ファイルのデフォルトの場所は、プロジェクトの「Build/IOS」ディレクトリにあります。 UE でプロジェクト用に Xcode プロジェクトを生成する場合、テンプレート「.plist」ファイルがプロジェクトにあるかどうかを確認します。 存在しない場合は、エンジンからプロジェクト フォルダーに .plist がコピーされます。
Xcode で .plist 設定を編集し、UE インストール ディレクトリ (プロジェクト ディレクトリではない) で .plist ファイルを参照する場合は、Xcode によってこれが書き込み可能に設定され、変更されます。これにより、そのインストールを使用するすべての UE プロジェクトに影響します。 このため、UE によって、エンジンの「.plist」ファイルがプロジェクトにコピーされます。 将来のエンジンのバージョンの「.plist」ファイルと比較し、デフォルト設定を更新したかどうかを確認する場合があります。
このような場合、後述の「.plist をデフォルトに復元する」の手順を参照してください。
UnrealEditor ターゲットには固有の .plist があります。.app はすべてのプロジェクトで共有されるためです。 ほとんどのユーザーはこれに対応する必要がありません。
事前作成された .plist を使用する
事前作成された .plist を使用する場合は、「DefaultEngine.ini」ファイルを変更し、使用するファイルへのパスを含む次の設定のいずれかまたは両方を設定します。
DefaultEngine.ini
[/Script/MacTargetPlatform.XcodeProjectSettings]
PremadeMacPlist=(FilePath="/Game/Build/Mac/Resources/MyGameMac.plist")
PremadeIOSPlist=(FilePath="/Game/Build/IOS/Resources/MyGameIOS.plist").plist をデフォルトに復元する
[Info.plist をデフォルトに復元] ボタンを使用して、Engine ディレクトリの Mac デフォルト テンプレート「.plist」ファイルをプロジェクトに再コピーし、適切な値に設定することもできます。 これは、更新されたデフォルトの「.plist」ファイルを今後の UE バージョンで使用する場合に便利です。
生成されたアプリから「.plist」ファイルを取得して、それを事前作成された .plist のソースとして使用できます。
プライバシーに関するマニフェスト
Xcode ではプライバシー マニフェストを使用して、アプリがユーザーに関して収集するデータの種類とそのデータを収集する理由を要約します。 これには、独自のコードによって収集されるデータと、使用している サードパーティ SDK によって収集されるデータが含まれます。 アプリケーションを配信すると、Xcode はSDK とアプリケーションのプライバシー マニフェストを単一のプライバシー レポートにまとめます。これにより、アプリケーションのプライバシー慣行に関する透明性の高い情報をユーザーに提供することが容易になります。
UE は、以下の場所でデフォルトのプライバシー マニフェストを提供しています。
MacOS:
Engine/Build/Mac/Resources/UEMetadata/PrivacyInfo.xcprivacyiOS、tvOS、iPadOS:
Engine/Build/iOS/Resources/UEMetadata/PrivacyInfo.xcprivacy
追加のプライバシー機能を使用するプロジェクトの場合は、UE のプロジェクト設定によって指定される場所で追加の PrivacyInfo.xcprivacy ファイルを提供する必要があります。 デフォルトでは以下の場所です。
MacOS:
/Game/Build/Mac/Resources/PrivacyInfo.xcprivacyiOS、tvOS、iPadOS :
/Game/Build/IOS/Resources/PrivacyInfo.xcprivacy
詳細については、プライバシー マニフェストに関する Apple のドキュメントを参照してください。
MacOS と iOS
「.plist」ファイルの操作は、新しい Xcode ワークフローでは、macOS と iOS で異なります。UBT には iOS の「.plist」ファイルを生成するために深く組み込まれたロジックがあるためです。 プロジェクト ジェネレータ/Xcode に対してロジックを組み込むことはできません。
UBT のデフォルト設定を見ると、「/Game/Build/IOS/UBTGenerated/Info.Template.plst**」、** を参照していることがわかります。これは、UBT が実行されるたびに iOS の.plist の内容が変更される可能性があることを示しています。
ただし、プロジェクト設定を変更してテンプレート (または事前作成された)「.plist」ファイルを使用することができます。この場合、UBT が生成するファイルは無視されます。 これを行う場合は、Xcode を使用して「.plist」ファイルを編集できます。
次に示すのは、Mac と iOS の「.plist」ファイルの違いに関する概要です。
| Mac | IOS | |
|---|---|---|
デフォルトの .plist | Engine のディレクトリからコピーされたテンプレート | UBT で生成されたテンプレート。 |
Xcode .plist の修正 | オン | UBT で生成されたものを使用する場合、不可 |
利用資格
すべてのアプリは、共同デザインの一部として利用資格を指定します。 利用資格は、GameCenter のサポートや Mac セキュリティのサンドボックスでの実行など、Apple で作成された機能や制限を制御します。
UE の Xcode プロジェクトの生成では、上記の (Mac)「.plist」のように利用資格を処理します。 UE では Xcode プロジェクトを生成します。プロジェクトのデフォルトの場所に利用資格ファイルがない場合、デフォルトが Engine ディレクトリからコピーされます。 その後、Xcode (またはテキストエディタ) を使用して利用資格を変更できます。これらは、プロジェクトの Build/Mac/Entitlements または Build/IOS/Entitlements にあります。
エンドユーザー向けに別のサンドボックスの制限を設定する場合またはシッピング内容を別のものにする場合、シッピングと開発に別の利用資格を設定できます。 別々の機能が不要な場合、同じファイルでこれを指定します。
現在、プロジェクト設定に Mac の利用資格のみが表示されています。
次に、macOS と iOS のデフォルトの利用資格の設定を示します。
| 利用資格設定 | Mac | IOS |
|---|---|---|
デフォルトの開発 | サンドボックス化され、クライアント/サーバー ネットワーク接続が許可されます。 | 特定の利用資格は設定されていません。 |
デフォルトのシッピング | サンドボックス化され、クライアント ネットワーク接続が許可されます。 | 特定の利用資格は設定されていません。 |
クラッシュ レポート機能は、サンドボックス利用資格を有効にするパッケージ化されたゲームと互換性がありません (UE 5.3 以降のデフォルト)。
フレームワーク
フレームワークは、ヘッダ、ライブラリ、コンテンツを収集するための Xcode システムです。 新しい Xcode ワークフローでは、以前のワークフローのような手動のコピーおよび共同デザインを行うのではなく、標準 Xcode メソッドを使用してフレームワークを処理します。 UE で Xcode プロジェクトを生成すると、ビルド システムを使用して、さまざまなビルド ソース ファイルで参照されているフレームワークを検索します。 その後、Xcode プロジェクトを設定して、ダイナミック ライブラリとコンテンツをアプリのバンドルにコピーし、必要に応じて共同デザインします。
アクセス ログ
サンドボックスの設定とアプリケーションの実行方法に応じて、ログ ファイルは異なる場所に表示されます。
サンドボックスが有効な場合:
Running through xcode: ~/Library/Logs/[プロジェクト名]
ダブルクリックするか、ターミナルを使用して実行します。~/Library/Containers/[アプリのバンドル ID]/Data/Library/Logs
サンドボックスが無効な場合:
~/Library/Logs/[プロジェクト名]