App crashes because SteamVR plugin in Android

Hi there.

I’m trying to make a multiplatform game, I have everything prepared fro GearVR and HTC Vive, so far I don’t have any network code, I’m just trying to execute the maps in both platforms, Vive is working perfectly in the PC but in Android when I load the map the app crashes with this error:

[2017.04.28-08.21.36:674]  0]LogStreaming:Error: Couldn't find file for package /Script/SteamVR requested by async loading code. NameToLoad: /Script/SteamVR
[2017.04.28-08.21.36:712]  0]LogStreaming:Error: ****DumpDependencies [Dependencies]:
[2017.04.28-08.21.36:712]  0]LogStreaming:Error:     Export 336 SteamVRChaperone_GEN_VARIABLE
[2017.04.28-08.21.36:713]  0]LogStreaming:Error:     Linker is ../../../BS_TargetVR/Content/VirtualRealityBP/Blueprints/BP_MotionController.uasset
[2017.04.28-08.21.36:713]  0]LogStreaming:Error:         Dep S_BEFORE_S Export   303    BP_MotionController_C     (class BlueprintGeneratedClass)
[2017.04.28-08.21.36:713]  0]LogStreaming:Error:         Dep C_BEFORE_C Export   303    BP_MotionController_C     (class BlueprintGeneratedClass)

I can’t make it running, help is appreciated here because I’m totally lost!

Cheers and thanks in advance!

SteamVR doesn’t build for Android; it can only be used on Windows and Linux. SteamVRChaperone can’t be used in an Android-targeted project.

Hi Chris Babcock.

I know that, but then how can I do a multiplatform project?
Because I cannot disable SteamVR plugin for android builds, can’t I?


EDIT: BTW in the android build I’m not using SteamVR, I have an agnostic level where I define different game modes based on the platform, and the error comes when I load that level, I can load an empty level however… any advice regarding this is very welcome since I need to have a prototype of a multiplatorm game for Vive and GearVR in the coming days and I’m a bit stuck with this…

Cheers and thanks!


The problem is that SteamVRChaperone is part of the SteamVR plugin, which is not built for other platforms. So when the game tries to load the class for the component it fails.

We intend to refactor to fix this eventually, but likely not for several months. I expect that the component would be pulled from the plugin so it can always load, and then hook into platform specific functionality for whatever platform is active, or do nothing for those that don’t have a chaperone feature.

However I think I have a partial workaround. You can use the ClassRedirects feature, which is normally used to update content as other content and code changes to ignore that component. Ideally in AndroidEngine.ini… but that did not work for me the one time I tried it. DefaultEngine.ini did work.

Add this:

And then at runtime the game will load up a DecalComponent instead of the SteamVRChaperoneComponent. The DecalComponent should do nothing.

Then you can at least switch between the two with just 1 ini file changing.

You would need to avoid running ‘fixupredirects’ when this redirect was active.

Sorry for the trouble.