いまさらながらのHTC VIVE XR Elite 開発記 Vol..1

# HTC Vive XR Eliteの記事を書こう

書こうと思った動機は、
- 公式のマニュアルの情報がほぼゼロ
- 世間にも情報がない。
- トラブっても対処方法が全く分からん。
- 公式通り試してもまともに開発できない。

という経緯があり、触ってはイラっとしてほったらかしていた。
くそ高いハードウェアを使えない状態で死蔵させておくのはもったいなさすぎるというところ。

現時点での到達点はUE5.3でBuildしたXRアプリで真っ暗な画面が立ち上がった。


# 前提

https://docs.unrealengine.com/5.3/ja/how-to-set-up-android-sdk-and-ndk-for-your-unreal-engine-development-environment/

UE5.3のAndroid環境設定は複雑で、エラーが発生した場合の修正は容易ではありません。
「なんかわからんけど、動かへん」場合のおススメは、AndroidStudio、SDK、NDKをすべてアンインストール、フォルダを削除して、UE5.xのエンジンも削除して再インストールすることです。
頑張るのは基本的に時間の無駄と思われます。

一番失敗しそうなのが環境設定ですが、自動的にバッチで設定してくれるらしく、すべて削除してからバッチを実行するのがよさそうですね。


![SnapCrab_NoName_2023-10-9_8-41-14_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/121950/ce3edd45-c027-5d99-b24b-313f760cabe8.png)



# トラブル その１ Platform Android is not a valid platform to build

NDKが複数入っていると正常に動作しない場合がある。
UnrealEngine5.3ではNDKは25bと記載されているが。インストール時には25bとは記載されておらず、複数インストールされていたため新しい方を指定してエラーが発生していた（私の環境では25b＝25.1.8937393でした）。
AndroidStudioから削除した。

![SnapCrab_NoName_2023-10-9_8-44-56_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/121950/753d43ec-1bac-b751-8a39-c09dbed42f59.png)


# トラブル その２ minSdkVersion is higher than Android version




```
LogPlayLevel: UAT: Running: C:\Users\XXXXX\AppData\Local\Android\Sdk\platform-tools\adb.exe -s FA3373800154 install "K:\UE5\ViveOpenXRGame\Binaries/Android\ViveOpenXRGame-Android-Shipping-arm64.apk"
LogPlayLevel: UAT: adb: failed to install K:\UE5\ViveOpenXRGame\Binaries/Android\ViveOpenXRGame-Android-Shipping-arm64.apk: Failure [INSTALL_FAILED_OLDER_SDK: Failed parse during installPackageLI: /data/app/vmdl1053193675.tmp/base.apk (at Binary XML file line #8): Requires newer sdk version #33 (current version is #29)]
LogPlayLevel: UAT: Performing Streamed Install
LogPlayLevel: UAT: Took 1.44s to run adb.exe, ExitCode=1
LogPlayLevel: UAT: minSdkVersion is higher than Android version installed on device, possibly due to NDK API Level
LogPlayLevel: UAT: Installation of apk 'K:\UE5\ViveOpenXRGame\Binaries/Android\ViveOpenXRGame-Android-Shipping-arm64.apk' failed: [INSTALL_FAILED_OLDER_SDK: Failed parse during installPackageLI: /data/app/vmdl1053193675.tmp/base.apk (at Binary XML file line #8): Requires newer sdk version #33 (current version is #29)]
LogPlayLevel: UAT: Performing Streamed Install
```



UE5.3（Viveのサンプルが存在する最新バージョン）のSDKは推奨33。シッピングする最小のターゲットSDKは30のようだ。

https://docs.unrealengine.com/5.3/ja/android-development-requirements-for-unreal-engine/

![SnapCrab_NoName_2023-10-9_8-46-37_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/121950/6bc84f03-1a04-7921-d49d-5ff188583908.png)

が、Viveで設定されているのは ターゲット32、min 21のようだ。これをUE5 の推奨に合わせたのがまずかったようなので、元に戻す。(この値を何にするのが適切なのかViveのマニュアルにはないのだが…)

![SnapCrab_NoName_2023-10-9_8-51-30_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/121950/82ad4014-4ee4-e060-00d5-610fb635bcda.png)

# トラブル その３　Failed to open descriptor file

これはどうもUE5側のエラーらしいが、Viveで見たときにエラーが見えないのはどうにかしてほしい…


![Screenshot_20231009_090809.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/121950/55b6b458-d116-27b8-cadc-d537d808ee06.png)

https://forums.unrealengine.com/t/unreal-engine-5-android-game-failed-to-open-descriptor-file/582207/9

UE5.2 ではAndroid FileServerを無効にしたところなおったという報告を見たので試すが、これでは対処できなかった。

よく分からんが、
- Install LocationをAutoへ
- Packange game data inside .apk?

をキャプチャのように変更してエラーは出なくなった

![SnapCrab_NoName_2023-10-9_9-43-39_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/121950/5a53f279-b2d4-9428-a9a0-a51493bf3837.png)


ファイル権限がないので、追加すればよいという情報も見かけたが、コマンドが通らず断念。

```
>adb shell appops set --uid com.epicgames.ViveOpenXRGame MANAGE_EXTERNAL_STORAGE allow
Error: Unknown operation string: MANAGE_EXTERNAL_STORAGE
```


https://forums.unrealengine.com/t/failed-to-open-descriptor-file-android/467113/22

# トラブル その４

起動後画面が真っ暗。
2023年10月09日 時点で対処不明。
**2023年10月10日 ファームをUpdateしたことで解決！**