Android File Server (AFS) は Unreal Engine (UE) のプラグインで、開発、デバッグ または テスト (もしくは任意で シッピングするプロジェクト、下記参照 プロジェクト ビルドをパッケージ化する際に、ファイル サーバーを Android アプリケーションに埋め込みます。このファイル サーバーが実行されている間は、ファイルの管理、プッシュ、表示に UnrealAndroidFileTool を使用できます。AFS を含むビルドでは、Unreal Engine によってこれがクイック起動のデプロイに使用されます。AFS と UnrealAndroidFileTool を併用することで Android Debug Bridge (ADB) の代用となり、Unreal Engine のワークフロー向けにカスタマイズされている同じ機能の多くを利用できます。
AFS では、クイック起動の処理にデバイスの SD カードまたは外部ストレージを使用するのではなく、外部ストレージのサンドボックスを使用します。これにより、ストレージに対する許可や範囲限定のアクセスを必要とせずにファイルの操作行えるようになります。プロジェクトの開発やビルドのデプロイ時には、このような許可やアクセスに常に対処する必要があるため、その手間が省けます。AFS は WiFi 接続、USB 接続、またはその両方で機能するため、デプロイメントはより高速で処理されます。
コンフィギュレーションと設定
このセクションでは、AFS のパッケージ化と接続について説明します。これらの設定は [Project Settings (プロジェクト設定)] > [Plugins (プラグイン)] > [AndroidFileServer] にあります。このセクションには、設定可能なパラメータがそれぞれ含まれています。
パッケージ化の設定
[Packaging (パッケージ化)] セクションには、AFS を含むビルドのタイプと、ファイル サーバーで有効にする機能を制御する設定が含まれています。AFS はデフォルトで有効になっており、非シッピング ビルドでは、無効にしない限り、ファイル サーバーがプロジェクトに自動的に埋め込まれます。AFS はデフォルトではシッピング ビルドに含まれませんが、有効に設定することも可能です。
パラメータ |
説明 |
---|---|
Use AndroidFileServer |
有効な場合、プロジェクトにはパッケージ化されたビルド、およびクイック起動ビルド向けにファイル サーバーが埋め込まれます。無効な場合はプロジェクトで AFS は使用されず、Unreal Engine は ADB にフォールバックします。 |
Allow Network Connection |
有効な場合は、AFS で WiFi 接続と USB を介した接続が許可されます。詳細については、「接続の設定」を参照してください。 |
Security Token |
AFS を保護し、トークンを持たないユーザーによるリモート起動を回避するために使用できる一意の文字列です。詳細については、「セキュリティ トークンを使用する」を参照してください。 |
Include in Shipping |
有効な場合は AFS がシッピング ビルドに含まれます。詳細については、「シッピング ビルドで AFS を使用する」を参照してください。 |
Allow External Start in Shipping |
Include in Shipping とともに使用することで、UnrealAndroidFileTool を含む、またはクイック起動用のファイル サーバーを開始するための外部リクエストを許可します。 |
Compile AFSProject |
有効な場合、Unreal Engine ではプロジェクトのパッケージ化の際に、AFS を個別の APK としてコンパイルします。詳細については、「Compiling AFSProject (AFSProject をコンパイルする)」を参照してください。 |
シッピング ビルドで AFS を使用する
通常、シッピング ビルドに AFS は含まれませんが、Include in Shipping と Allow External Start in Shipping を有効にすることで追加できます。Include in Shipping のみを有効にすると、AFS 自体は使用できるもののクイック起動には使用されないため、AFS をアプリケーション内から手動で開始/停止する必要があります。
AFS を開始および停止する
非シッピング ビルドを使用する場合、またはシッピング ビルドの外部スタートが有効な場合、レシーバーはリモートによるファイル サーバーの開始と停止を許可するために登録されます。UnrealAndroidFileTool を使用してデバイスのファイル サーバーに接続してファイルを管理することができます。それ以外の場合は、AFS を有効にして、Unreal Engine アプリケーション内から手動でファイル サーバーを起動する必要があります。詳細については「ブループリントを使って AFS を手動で開始および停止する」を参照してください。
セキュリティ トークンを使用する
[Security Token (セキュリティ トークン)] フィールドに入力すると、ファイル サーバーにより、UnrealAndroidFileTool から受信するあらゆる接続リクエストに、一致するセキュリティ トークンが必要になります。詳細については、UnrealAndroidFileTool のリファレンスを参照してください。
セキュリティ トークンが提供するのは基本的なセキュリティのみであり、暗号化は一切されません。シッピング ビルドの安全性をより堅牢にするために「[Android File Server Blueprint library」を使用してください。セキュリティ トークンを使用する際は、組織外のユーザーにトークンを渡さないように注意してください。
手動で AFSProject をコンパイルして AFS をインストールする
[Compile AFSProject] が有効な場合は、ファイル サーバーを含むスタンドアローンの APK がパッケージ化されます。これは、プロジェクトのコンフィギュレーションとキー署名に一致するものです。この APK をデバイスにインストールして、adb install -r
オプションを使って新規または既存のファイルを管理できます。その後は、内部または外部のデータ ファイルに影響を及ぼすことなく、同じオプションで実際の APK を再インストールできます。これは、サーバーがビルトインされていないシッピング ビルド上でファイルを管理する必要がある場合に特に便利です。
シッピング ビルドでは、[Compile AFSProject] が有効であるかどうかにかかわらず AFSProject がコンパイルされます。
デプロイの設定 (ログと圧縮)
[Deployment (デプロイメント)] セクションに含まれる設定では、ファイル サーバーによってログに記録される情報を制御します。
パラメータ |
説明 |
---|---|
Use Compression (Beta) |
ファイル サーバー上のデータ ファイルに圧縮を適用します。UE 5.0 では、転送時間への影響は現時点で最小限となっています。 |
Log Files |
デバイスにプッシュされているファイルのリストを表示します。 |
Report Stats |
デバイスにプッシュされたファイルの数と、接続上でプッシュされたバイト数のリストを表示します。 |
ログの出力設定が有効な場合は、Unreal Engine により、クイック起動の際に コンソール ウィンドウに AFS のインストール プロセスに関する情報が記録されます。
USB とネットワークを両方有効にしてログインする
USB とネットワークを両方有効にすると、ファイルのログ記録時には、ファイルが送信された接続のタイプを示すプレフィックスが AFS によって表示されます。
プレフィックス |
説明 |
---|---|
1> |
USB を介して送信されたファイル。 |
2> |
WiFi を介して送信されたファイル。 |
次の例では、マップ ファイルが USB を介して送信されたことを示しています。
1> TestGameEntry.umap
USB と WiFi の両方を使用している場合は、一方の接続がビジー状態の際にもう一方が使用されます。
1> TestGameEntry.umap
2> TestTexture.uasset
2> TestMaterial.uasset
1> TestPawn.uasset
接続の設定
[Connection (接続)] セクションには、AFS がコンピュータをデバイスに接続する際に使用する接続のタイプを設定するオプションが含まれます。
パラメータ |
説明 |
---|---|
Connection Type |
ファイル サーバーとの接続に、USB、WiFi、またはその両方のどれを使用するかを定義します。 |
Use Manual IP Address |
有効な場合、クイック起動では [Manual IP Address (手動 IP アドレス)] フィールドに入力された IP で Android デバイスを使用します。そうでない場合は、接続されていれば USB を介して IP アドレスの検出を試みます。 |
Manual IP Address |
クイック起動の際に接続先となる Android デバイスの IP アドレスです。このデバイスは、ローカル WiFi ネットワークに接続されている必要があります。 |
接続のタイプ
[Connection Type] ドロップダウンでは、ファイルをプッシュする際に使用する接続のタイプを選択します。
接続タイプ |
説明 |
---|---|
USB |
USB 接続を介してファイルを Android デバイスにプッシュします。 |
WiFi Network |
コンピュータと同じローカル エリア WiFi ネットワーク上にある Android デバイスに、WiFi 接続を介してファイルをプッシュします。この設定を使用するには、[Allow Network Connection] を有効にしておく必要があります。 |
USB and Network Combined |
ファイルのプッシュに USB 接続と WiFi 接続の両方を同時に使用します。ファイルの転送でいずれかの接続が占有された状態になると、キューで待機している次のファイルにもう一方の接続が使用されます。この設定ではファイルの転送がより高速になります。これはデプロイメント プロセスの一部として統合されています。 |
オーバーライドしない限り、AFS のデフォルト ポートは 57099 です。
手動 IP アドレスを使用する
[Use Manual IP Address?] 設定を有効にして Android デバイスの IP アドレスを入力すると、AFS ではビルドをデプロイする際に、通常のデバイス マネージャー ワークフローのデフォルト デバイスではなく、指定された Android デバイスに接続します。このデバイスは、使用しているコンピュータと同じ WiFi ネットワークに接続されている必要があります。
ブループリントを使って AFS を手動で開始および停止する
Android File Server ブループリント ライブラリを使うことで、ファイル サーバーを UE アプリケーション内から手動で開始/停止したり、ステータスを確認したりすることができます。
ノード |
説明 |
---|---|
Start File Server |
指定された接続ポートを使ってファイル サーバーを開始します。このノードを使ってサーバーを開始する際は、USB 接続を許可するか、ネットワーク接続を許可するかを選択できます。この戻り値は、サーバーが適切に開始したかどうかを示すブール値です。 |
Stop File Server |
ファイル サーバーが実行している場合にこれをシャットダウンします。特定の接続タイプのみを閉じることも可能です。この戻り値は、サーバーが適切にシャットダウンしたかどうかを示すブール値です。 |
Is File Server Running |
|
AFS ではプロジェクト用に生成された一意のトークンを使った基本的なセキュリティが提供される一方で、これらのブループリント ノードを使用すると、デフォルトのブロードキャスト レシーバーを使った場合と比べて、AFS の開始と停止に関するセキュリティの強化が可能になります。
UnrealAndroidFileTool
UnrealAndroidFileTool は、デバイスにデプロイされているファイル サーバーに接続し、ファイルを手動で管理できるようにするコマンドライン ツールです。このツールは、エンジンのインストール先の「Engine/Binaries/DotNET/Android/UnrealAndroidFileTool
」に保存されています。ここには、Linux 版、MacOS 版、Windows 版の各実行可能ファイルを含むフォルダがそれぞれ用意されています。
これら 3 つのオペレーティング システム用の UnrealAndroidFileTool 実行可能ファイルがすべて必要な場合は、[Project Settings] > [Platforms (プラットフォーム)] > [Android] を開き、[Generate install files for all platforms (すべてのプラットフォーム向けのインストール ファイルを生成)] を有効にします。この設定を有効にしないと、Unreal Engine では、パッケージ化されたターゲット ディレクトリのエディタ ホスト タイプに一致する実行可能ファイルのみが提供されます。
コマンドラインを通じてこの実行可能ファイルを実行すると、利用可能なすべての関数が含まれるメニューが表示されます。これらのコマンドは、コマンドラインに追加することで実行可能ファイルとともに実行できます。
コマンド リファレンス
UnrealAndroidFileTool のコマンドは、接続の確立先を定義する一連の**パラメータ と、その後に続く、ファイル サーバーに送信する コマンド** とで構成されます。次の例では、特定のシリアル番号を持つデバイスでシェル コマンドを実行し、特定のプロジェクトのファイルを参照します。
UnrealAndroidFileTool.exe -s AB187923123CD123 -p com.OrganizationName.ProjectName shell
パスを設定する
AFS 内のパスではコマンドライン パスの通常の規則が使用されますが、ファイル階層のナビゲーション用にいくつかのショートカットもサポートされています。
テキスト |
説明 |
---|---|
|
|
|
指定したディレクトリの数だけ上に移動します。 |
|
ショートカット、または与えられたキーに対するクエリとして、ファイルパスの冒頭で使用されます ( |
次は、^[key]
を使用する一般的なショートカットの一部です。これらを使用する必要はありませんが、非常に便利なショートカットです。
ショートカット |
説明 |
---|---|
ディレクトリへのショートカット |
|
|
外部ストレージ ディレクトリ。 |
|
内部ストレージ ディレクトリ。 |
|
外部ストレージ ディレクトリ (READ_EXTERNAL_STORAGE および/または WRITE_EXTERNAL_STORAGE の許可が必要です)。 |
|
「obb」ディレクトリ。 |
|
「UnrealGame」ディレクトリ。 |
|
「UnrealGame/[プロジェクト名]」ディレクトリ。 |
|
「UnrealGame/Engine」ディレクトリ。 |
|
「UnrealGame/[プロジェクト名]/[プロジェクト名]」ディレクトリ。 |
|
「Saved」ディレクトリ。 |
|
「Logs」ディレクトリ。 |
特定のファイルへのショートカット |
|
|
|
|
プロジェクト ログ ファイル。 |
|
メイン |
|
パッチ |
ファイルパス以外のクエリ |
|
|
プロジェクトのパッケージ名。 |
|
パッケージ バージョン コード。 |
|
ネットワーク上にあるデバイスの IP アドレス。 |
パラメータ
次のパラメータをファイル サーバー コマンドの前に加えることで、特定のターゲット デバイスとプロジェクトに向けて接続を設定できます。
コマンド |
説明 |
---|---|
|
指定したシリアル番号のデバイスにコマンドを送信します。 |
|
指定した IP アドレスのデバイスに接続します。 |
|
デバイスへの接続に使用するポートをオーバーライドします。これを指定しない場合、デフォルトのポートは |
|
接続先のアプリケーションのリバース ドメイン パッケージ名。例: |
|
セキュリティ トークンを使用する で説明されているように、ファイルサーバーへの接続に必要なセキュリティトークンを提供します。 |
デバイス管理コマンド
次の表は、利用可能なデバイスや認識済みのパッケージに関する利用可能な情報を取得するため、またはリモート サーバーを停止するために使用できるコマンドのリファレンスです。
コマンド |
説明 |
---|---|
|
パラメータを含む別のコマンドの名前とともに help コマンドを使用すると、UnrealAndroidFileTool によってそのコマンドの詳細と設定方法が表示されます。 |
|
アクセス可能な接続済みのデバイスがリスト表示されます。 |
|
AFS レシーバーが有効なパッケージがリスト表示されます。 |
|
レシーバーを含むすべてのパッケージに停止リクエストが送信されます。 |
|
指定したリモート サーバーを停止します。 |
push
や pull
、または shell
など、ファイル サーバーとやり取りするあらゆるコマンドではサーバーの開始を暗黙的にリクエストするため、サーバーを開始するためのコマンドは用意されていません。
インタラクティブ モードのコマンド
インタラクティブ モード を開始/終了するには、下記のコマンドを使用できます。インタラクティブ モードは ADB と同じように機能するもので、デバイスとの接続を開いて複数のコマンドを送信することができます。それぞれのコマンドで「UnrealAndroidFileTool.exe」を実行する必要はありません。UnrealAndroidFileTool は、ユーザーが終了するまでインタラクティブ モードのままになります。
コマンド |
説明 |
---|---|
|
インタラクティブ モードを開始します。 |
|
インタラクティブ モードを終了します。 |
クエリ コマンドとナビゲーション コマンド
次は、デバイス上のディレクトリとファイルに関する情報を取得したり、インタラクティブ モード時にベース ディレクトリのナビゲーションを提供したりするコマンドです。
コマンド |
説明 |
---|---|
|
特定のキーを含むすべての変数を表示します。 |
|
指定したキーに関連付けられているプロパティを取得します。 |
|
ベース ディレクトリを設定します。 |
|
現在のベース ディレクトリを表示します。 |
|
指定したパスのディレクトリが存在するかどうかを出力します。 |
|
指定したパスのディレクトリに含まれるコンテンツを表示します。次の指定子を使って、出力する情報を指定できます。
|
ファイル管理
次は、デバイス上のファイルとやり取りする、またはファイルを変更するコマンドです。
コマンド |
説明 |
---|---|
|
指定したパスにディレクトリを作成します。 |
|
指定したパスのディレクトリを削除します。 |
|
指定したファイルが存在するかどうかを出力します。 |
|
指定したファイルを削除します。 |
|
|
|
|
|
モバイル デバイス上の [ソース] ファイルを、PC 上の指定した |
|
PC 上の |
|
デバイス上のファイルのコンテンツをアウトプット ログに書き出します。 |
|
「デプロイメント ソース/デプロイメント先」のペアを含むテキスト ファイルを読み取ります。 |
コマンドライン ファイルのコマンド
次は、リモート デバイス上にあるプロジェクトの「UECommandLine.txt
」ファイルとやり取りする、または変更するコマンドです。
コマンド |
説明 |
---|---|
|
データを「 |
|
データを「 |
|
データを「 |