03-17-2025 03:53 AM - edited 03-17-2025 03:54 AM
I'm developing a Unity VR application using the now-deprecated Oculus Integration SDK. When I built the app and launched it in a Quest 2, the Unity runtime was running but did not follow/track the rotation/position of the device. Controllers could also not interact with the runtime. Pressing the button to summon the system overlay does nothing. Briefly putting the Quest 2 to sleep and waking it resolves the problem. This only happens when launching after build, I did not observe this problem occurring when launching from the menu.
When I checked the Android logcat I see a warning message from the MemoryBrokerClient, which states
HeadTracker: failed to remap HEAD_TRACKER: getSharedMemoryFileDescriptor (Status(-1, EX_SECURITY): 'missing runtime permission(s)')
This warning message only shows up when this behavior is observed. The device had 1500+ MB of free memory when this happens so I don't suspect it being caused by a leak.
Stereo rendering mode is set to Multiview. GLES Low Overhead, Vulkan Buffer Discards, and Vulkan Symmetric Projection is ticked. Phase Sync and Vulkan Subsampled Layout is not ticked, but doing so yields the same result.
Here's what the project's AndroidManifest looks like:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="auto"
xmlns:tools="http://schemas.android.com/tools" package="com.unity3d.player">
<application android:label="@string/app_name" android:icon="@mipmap/app_icon" android:allowBackup="false">
<activity
android:screenOrientation="landscape"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
android:configChanges="density|keyboard|keyboardHidden|navigation|orientation|screenLayout|screenSize|uiMode"
android:launchMode="singleTask"
android:resizeableActivity="false"
android:name="com.unity3d.player.UnityPlayerActivity"
android:excludeFromRecents="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="com.oculus.intent.category.VR" />
</intent-filter>
</activity>
<meta-data android:name="unityplayer.SkipPermissionsDialog" android:value="false" />
<meta-data android:name="com.samsung.android.vr.application.mode" android:value="vr_only" />
<meta-data android:name="com.oculus.supportedDevices" android:value="quest2|questpro|quest3|quest3s"/>
</application>
<uses-feature android:name="android.hardware.vr.headtracking" android:required="true" android:version="1" />
<uses-permission android:name="android.permission.RECORD_AUDIO" tools:node="remove" />
<uses-permission android:name="android.permission.CAMERA" tools:node="remove" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="remove" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" tools:node="remove" />
<uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION" tools:node="remove" />
</manifest>
This might've been the issue that's blocking one of the VRCs and preventing my app's release to the Quest store. What kind of permissions should I indicate to prevent this from occurring?