Errors when packaging for Oculus Quest (android) - ld.lld: error: undefined symbol: VR_GetInitToken

Hi there, I’m a bit new to the forums so I appreciate any feedback.

I’ve got the following log output for trying to package an APK for my Oculus Quest VR game:

UATHelper: Packaging (Android (ASTC)): ********** COOK COMMAND COMPLETED **********
UATHelper: Packaging (Android (ASTC)): ********** BUILD COMMAND STARTED **********
UATHelper: Packaging (Android (ASTC)): Running: C:\UnrealEngine-4.25oculus\Engine\Binaries\DotNET\UnrealBuildTool.exe Tower Android Development -Project=“S:\Unreal Projects\PersonalPlasticRepos\ProjectTower\Tower.uproject” “S:\Unreal Projects\PersonalPlasticRepos\ProjectTower\Tower.uproject” -NoUBTMakefiles -remoteini=“S:\Unreal Projects\PersonalPlasticRep
os\ProjectTower” -skipdeploy -Manifest=C:\UnrealEngine-4.25oculus\Engine\Intermediate\Build\Manifest.xml -NoHotReload -log=“C:\UnrealEngine-4.25oculus\Engine\Programs\AutomationTool\Saved\Logs\UBT-Tower-Android-Development.txt”
UATHelper: Packaging (Android (ASTC)): PLATFORM_ANDROID_NDK_VERSION = 210200
UATHelper: Packaging (Android (ASTC)): NDK toolchain: r21b, NDK version: 29, GccVersion: 4.9, ClangVersion: 9.0.8
UATHelper: Packaging (Android (ASTC)): Parsing headers for Tower
UATHelper: Packaging (Android (ASTC)): Running UnrealHeaderTool “S:\Unreal Projects\PersonalPlasticRepos\ProjectTower\Tower.uproject” “S:\Unreal Projects\PersonalPlasticRepos\ProjectTower\Intermediate\Build\Android\Tower\Development\Tower.uhtmanifest” -LogCmds=“loginit warning, logexit warning, logdatabase error” -Unattended -WarningsAsErrors -abslog=“C:
\UnrealEngine-4.25oculus\Engine\Programs\AutomationTool\Saved\Logs\UHT-Tower-Android-Development.txt”
UATHelper: Packaging (Android (ASTC)): Reflection code generated for Tower in 4.0663313 seconds
UATHelper: Packaging (Android (ASTC)): Compiling Native 64-bit code with NDK API ‘android-29’
UATHelper: Packaging (Android (ASTC)): Writing manifest to C:\UnrealEngine-4.25oculus\Engine\Intermediate\Build\Manifest.xml
UATHelper: Packaging (Android (ASTC)): Building Tower…
UATHelper: Packaging (Android (ASTC)): Building 38 actions with 24 processes…
UATHelper: Packaging (Android (ASTC)): [1/38] Module.NativizedAssets.gen.14_of_17.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [2/38] Module.NativizedAssets.gen.13_of_17.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [3/38] Module.NativizedAssets.gen.12_of_17.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [4/38] Module.NativizedAssets.gen.15_of_17.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [5/38] Module.NativizedAssets.gen.2_of_17.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [6/38] Module.NativizedAssets.gen.1_of_17.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [7/38] Module.NativizedAssets.gen.3_of_17.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [8/38] Module.NativizedAssets.gen.5_of_17.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [9/38] Module.NativizedAssets.gen.17_of_17.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [10/38] Module.NativizedAssets.gen.16_of_17.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [11/38] Module.NativizedAssets.gen.7_of_17.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [12/38] Module.NativizedAssets.gen.6_of_17.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [13/38] Module.NativizedAssets.12_of_19.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [14/38] Module.NativizedAssets.gen.9_of_17.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [15/38] Module.NativizedAssets.11_of_19.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [16/38] Module.NativizedAssets.gen.4_of_17.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [17/38] Module.NativizedAssets.15_of_19.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [18/38] Module.NativizedAssets.16_of_19.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [19/38] Module.NativizedAssets.17_of_19.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [20/38] Module.NativizedAssets.5_of_19.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [21/38] Module.NativizedAssets.3_of_19.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [22/38] Module.NativizedAssets.gen.8_of_17.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [23/38] Module.NativizedAssets.19_of_19.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [24/38] Module.NativizedAssets.10_of_19.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [25/38] Module.NativizedAssets.gen.11_of_17.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [26/38] Module.NativizedAssets.18_of_19.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [27/38] Module.NativizedAssets.gen.10_of_17.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [28/38] Module.NativizedAssets.7_of_19.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [29/38] Module.NativizedAssets.8_of_19.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [30/38] Module.NativizedAssets.13_of_19.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [31/38] Module.NativizedAssets.14_of_19.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [32/38] Module.NativizedAssets.6_of_19.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [33/38] Module.NativizedAssets.2_of_19.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [34/38] Module.NativizedAssets.1_of_19.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [35/38] Module.NativizedAssets.9_of_19.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [36/38] Module.NativizedAssets.4_of_19.cpp [arm64]
UATHelper: Packaging (Android (ASTC)): [37/38] Tower-arm64.so
UATHelper: Packaging (Android (ASTC)): ld.lld: error: undefined symbol: VR_GetInitToken
UATHelper: Packaging (Android (ASTC)): >>> referenced by openvr.h:4827 (C:/UnrealEngine-4.25oculus/Engine/Source/ThirdParty/OpenVR/OpenVRv1_5_17/headers\openvr.h:4827)
UATHelper: Packaging (Android (ASTC)): >>> SteamVRInputDevice/Module.SteamVRInputDevice.cppa8.o:(FSteamVRInputDevice::GetSkeletalData(bool, bool, vr::EVRSkeletalMotionRange, FTransform*, int))
UATHelper: Packaging (Android (ASTC)): >>> referenced by openvr.h:4830 (C:/UnrealEngine-4.25oculus/Engine/Source/ThirdParty/OpenVR/OpenVRv1_5_17/headers\openvr.h:4830)
UATHelper: Packaging (Android (ASTC)): >>> SteamVRInputDevice/Module.SteamVRInputDevice.cppa8.o:(FSteamVRInputDevice::GetSkeletalData(bool, bool, vr::EVRSkeletalMotionRange, FTransform*, int))
UATHelper: Packaging (Android (ASTC)): >>> referenced by openvr.h:4827 (C:/UnrealEngine-4.25oculus/Engine/Source/ThirdParty/OpenVR/OpenVRv1_5_17/headers\openvr.h:4827)
UATHelper: Packaging (Android (ASTC)): >>> SteamVRInputDevice/Module.SteamVRInputDevice.cppa8.o:(FSteamVRInputDevice::GetSkeletalData(bool, bool, vr::EVRSkeletalMotionRange, FTransform*, int))
UATHelper: Packaging (Android (ASTC)): >>> referenced by openvr.h:4830 (C:/UnrealEngine-4.25oculus/Engine/Source/ThirdParty/OpenVR/OpenVRv1_5_17/headers\openvr.h:4830)
UATHelper: Packaging (Android (ASTC)): >>> SteamVRInputDevice/Module.SteamVRInputDevice.cppa8.o:(FSteamVRInputDevice::GetSkeletalData(bool, bool, vr::EVRSkeletalMotionRange, FTransform*, int))
UATHelper: Packaging (Android (ASTC)): >>> referenced by openvr.h:4827 (C:/UnrealEngine-4.25oculus/Engine/Source/ThirdParty/OpenVR/OpenVRv1_5_17/headers\openvr.h:4827)
UATHelper: Packaging (Android (ASTC)): >>> SteamVRInputDevice/Module.SteamVRInputDevice.cppa8.o:(FSteamVRInputDevice::GetSkeletalData(bool, bool, vr::EVRSkeletalMotionRange, FTransform*, int))
UATHelper: Packaging (Android (ASTC)): >>> referenced by openvr.h:4830 (C:/UnrealEngine-4.25oculus/Engine/Source/ThirdParty/OpenVR/OpenVRv1_5_17/headers\openvr.h:4830)
UATHelper: Packaging (Android (ASTC)): >>> SteamVRInputDevice/Module.SteamVRInputDevice.cppa8.o:(FSteamVRInputDevice::GetSkeletalData(bool, bool, vr::EVRSkeletalMotionRange, FTransform*, int))
UATHelper: Packaging (Android (ASTC)): >>> referenced by openvr.h:4827 (C:/UnrealEngine-4.25oculus/Engine/Source/ThirdParty/OpenVR/OpenVRv1_5_17/headers\openvr.h:4827)
UATHelper: Packaging (Android (ASTC)): >>> SteamVRInputDevice/Module.SteamVRInputDevice.cppa8.o:(FSteamVRInputDevice::InitSteamVRSystem())
UATHelper: Packaging (Android (ASTC)): >>> referenced by openvr.h:4830 (C:/UnrealEngine-4.25oculus/Engine/Source/ThirdParty/OpenVR/OpenVRv1_5_17/headers\openvr.h:4830)
UATHelper: Packaging (Android (ASTC)): >>> SteamVRInputDevice/Module.SteamVRInputDevice.cppa8.o:(FSteamVRInputDevice::InitSteamVRSystem())
UATHelper: Packaging (Android (ASTC)): >>> referenced by openvr.h:4827 (C:/UnrealEngine-4.25oculus/Engine/Source/ThirdParty/OpenVR/OpenVRv1_5_17/headers\openvr.h:4827)
UATHelper: Packaging (Android (ASTC)): >>> SteamVRInputDevice/Module.SteamVRInputDevice.cppa8.o:(FSteamVRInputDevice::InitSteamVRSystem())
UATHelper: Packaging (Android (ASTC)): >>> referenced by openvr.h:4830 (C:/UnrealEngine-4.25oculus/Engine/Source/ThirdParty/OpenVR/OpenVRv1_5_17/headers\openvr.h:4830)
UATHelper: Packaging (Android (ASTC)): >>> SteamVRInputDevice/Module.SteamVRInputDevice.cppa8.o:(FSteamVRInputDevice::InitSteamVRSystem())
UATHelper: Packaging (Android (ASTC)): >>> referenced 241 more times
UATHelper: Packaging (Android (ASTC)):
UATHelper: Packaging (Android (ASTC)): ld.lld: error: undefined symbol: VR_GetGenericInterface
UATHelper: Packaging (Android (ASTC)): >>> referenced by openvr.h:4840 (C:/UnrealEngine-4.25oculus/Engine/Source/ThirdParty/OpenVR/OpenVRv1_5_17/headers\openvr.h:4840)
UATHelper: Packaging (Android (ASTC)): >>> SteamVRInputDevice/Module.SteamVRInputDevice.cppa8.o:(FSteamVRInputDevice::GetSkeletalData(bool, bool, vr::EVRSkeletalMotionRange, FTransform*, int))
UATHelper: Packaging (Android (ASTC)): >>> referenced by openvr.h:4982 (C:/UnrealEngine-4.25oculus/Engine/Source/ThirdParty/OpenVR/OpenVRv1_5_17/headers\openvr.h:4982)
UATHelper: Packaging (Android (ASTC)): >>> SteamVRInputDevice/Module.SteamVRInputDevice.cppa8.o:(FSteamVRInputDevice::GetSkeletalData(bool, bool, vr::EVRSkeletalMotionRange, FTransform*, int))
UATHelper: Packaging (Android (ASTC)): >>> referenced by openvr.h:4982 (C:/UnrealEngine-4.25oculus/Engine/Source/ThirdParty/OpenVR/OpenVRv1_5_17/headers\openvr.h:4982)
UATHelper: Packaging (Android (ASTC)): >>> SteamVRInputDevice/Module.SteamVRInputDevice.cppa8.o:(FSteamVRInputDevice::GetSkeletalData(bool, bool, vr::EVRSkeletalMotionRange, FTransform*, int))
UATHelper: Packaging (Android (ASTC)): >>> referenced by openvr.h:4840 (C:/UnrealEngine-4.25oculus/Engine/Source/ThirdParty/OpenVR/OpenVRv1_5_17/headers\openvr.h:4840)
UATHelper: Packaging (Android (ASTC)): >>> SteamVRInputDevice/Module.SteamVRInputDevice.cppa8.o:(FSteamVRInputDevice::InitSteamVRSystem())
UATHelper: Packaging (Android (ASTC)): >>> referenced by openvr.h:4982 (C:/UnrealEngine-4.25oculus/Engine/Source/ThirdParty/OpenVR/OpenVRv1_5_17/headers\openvr.h:4982)
UATHelper: Packaging (Android (ASTC)): >>> SteamVRInputDevice/Module.SteamVRInputDevice.cppa8.o:(FSteamVRInputDevice::InitSteamVRSystem())
UATHelper: Packaging (Android (ASTC)): >>> referenced by openvr.h:4982 (C:/UnrealEngine-4.25oculus/Engine/Source/ThirdParty/OpenVR/OpenVRv1_5_17/headers\openvr.h:4982)
UATHelper: Packaging (Android (ASTC)): >>> SteamVRInputDevice/Module.SteamVRInputDevice.cppa8.o:(FSteamVRInputDevice::InitSteamVRSystem())
UATHelper: Packaging (Android (ASTC)): >>> referenced by openvr.h:4982 (C:/UnrealEngine-4.25oculus/Engine/Source/ThirdParty/OpenVR/OpenVRv1_5_17/headers\openvr.h:4982)
UATHelper: Packaging (Android (ASTC)): >>> SteamVRInputDevice/Module.SteamVRInputDevice.cppa8.o:(FSteamVRInputDevice::InitSteamVRSystem())
UATHelper: Packaging (Android (ASTC)): >>> referenced by openvr.h:4840 (C:/UnrealEngine-4.25oculus/Engine/Source/ThirdParty/OpenVR/OpenVRv1_5_17/headers\openvr.h:4840)
UATHelper: Packaging (Android (ASTC)): >>> SteamVRInputDevice/Module.SteamVRInputDevice.cppa8.o:(FSteamVRInputDevice::SetSkeletalHandle(char*, unsigned long&))
UATHelper: Packaging (Android (ASTC)): >>> referenced by openvr.h:4982 (C:/UnrealEngine-4.25oculus/Engine/Source/ThirdParty/OpenVR/OpenVRv1_5_17/headers\openvr.h:4982)
UATHelper: Packaging (Android (ASTC)): >>> SteamVRInputDevice/Module.SteamVRInputDevice.cppa8.o:(FSteamVRInputDevice::SetSkeletalHandle(char*, unsigned long&))
UATHelper: Packaging (Android (ASTC)): >>> referenced by openvr.h:4982 (C:/UnrealEngine-4.25oculus/Engine/Source/ThirdParty/OpenVR/OpenVRv1_5_17/headers\openvr.h:4982)
UATHelper: Packaging (Android (ASTC)): >>> SteamVRInputDevice/Module.SteamVRInputDevice.cppa8.o:(FSteamVRInputDevice::SetSkeletalHandle(char*, unsigned long&))
UATHelper: Packaging (Android (ASTC)): >>> referenced 104 more times
UATHelper: Packaging (Android (ASTC)): clang++: error: linker command failed with exit code 1 (use -v to see invocation)
PackagingResults: Error: undefined symbol: VR_GetInitToken
UATHelper: Packaging (Android (ASTC)): Took 115.7622779s to run UnrealBuildTool.exe, ExitCode=6
PackagingResults: Error: undefined symbol: VR_GetGenericInterface
PackagingResults: Error: linker command failed with exit code 1 (use -v to see invocation)
UATHelper: Packaging (Android (ASTC)): UnrealBuildTool failed. See log for more details. (C:\UnrealEngine-4.25oculus\Engine\Programs\AutomationTool\Saved\Logs\UBT-Tower-Android-Development.txt)
UATHelper: Packaging (Android (ASTC)): AutomationTool exiting with ExitCode=6 (6)
UATHelper: Packaging (Android (ASTC)): BUILD FAILED
PackagingResults: Error: Unknown Error

I’ve tried installing a new version of the Oculus Branch of the engine. I’ve rebuilt the engine and my product with both VS 2017 & 2019. I’ve gone through the C++ of the Oculus HMD plugin and the Steam VR plugin to comment out GetVRSystem() which apparently wasn’t recognized by the compiler and was my previous build error prior to this. I had an ambiguous “EColorSpace” error and issues with the Steam VR plugin not recognizing the function “GetVRSystem” which was clearly defined in the files so I commented it out in an effort to see if I could build without this uneeded functionality. I currently don’t need to support or use Steam VR, but disabling the plugin causes my editor to crash on startup saying there was an error with some Core UObject.

Eventually I would like to use Steam VR and accommodate PC VR platforms, but this issue of not being able to package seems to have jumped out at random and I’m not sure what to do from here.

I’ve attached the full build log here:
UE4-25-4_oculus_error_build_log.txt (124.3 KB)