Packaging and installing to the HTC VIVE Focus

I am unable to package and install an Unreal Engine APK to the HTC VIVE Focus. The entire project uses OpenXR frameworks only, and I am currently using Unreal Engine 5.7.1.

The packaging works with no problem and I am able to build an APK out of the project. This APK loads onto the Meta Quest 3 and works perfectly fine. I can sideload it, install, and run the app, and it works exactly as intended.

However, for the HTC VIVE Focus I have, no matter what I have tried to get a workable APK onto it, the installation gets recognized as a 2D application within the VIVE Focus library. The app just ends up being a flat 2D image with no immersive VR experience at all.

Current Setup and Steps Taken:

  • SDK and NDK: Using NDK r25b and SDK 34 (configured for UE 5.7).

  • Project Settings: “Start in VR” is enabled.

  • Manifest: I have attempted manual edits to the AndroidManifest.xml to include immersive categories, but the headset still defaults to 2D.

  • Plugins: Using the built-in OpenXR plugin.

  • Downgrade Attempt: I even tried downgrading to Unreal Engine 5.4 to use the HTC VIVE plugin that supports 5.4 and tried a sample UE VR project APK, but still no results.

Questions:

  1. Is there a specific Intent Category or Manifest Metadata required by the VIVE Focus that is different from the Quest 3?

  2. Do I need to include the VIVE OpenXR or Wave SDK plugin even for a pure OpenXR project to ensure the headset recognizes the “Immersive HMD” intent?

  3. Is anyone else using UE 5.7 for VIVE standalone and experiencing this “Flat 2D” initialization failure?

If anyone has experience packaging and installing a workable VR app APK into the VIVE Focus, please let me know how you were able to get that done.

Thank you!

1 Like

I’m getting the same issue with Unreal Engine 5.6 … Replying here to bump up the post on someone’s feed.

AFAIK, that’s not possible. The reason is HTC VIVE headsets require some special values and hooks inside AndroidManifest.xml. If it’s not there, it recognizes the app as 2D. The only way to inject those is to install any HTC plugin (ViveOpenXR for newer engine versions and WaveVR for older ones). However, sadly HTC has never released any plugins for UE 5.5 and onwards despite the fact that they promised to do so on their download page. I could guess maybe this has something to do with selling part of their XR business to Google.

Nonetheless, I have a guide on deploying to Android (which also includes HTC devices up to 5.4) here: On-Click Unreal Engine 5.7 Android Packaging & APK Build Tutorial | Meta Quest & HTC VIVE Standalone | Community tutorial

BTW, just copying the values from a working APK does not work either, if I remember correctly it has some line numbers or something to call something from a .so file or something like that, that’s why plainly copying AndroidManifest.xml data and inputing it through Unreal’s project settings for Android won’t work.