Develop
Develop
Select your platform

Android Manifest Settings

Updated: Jun 11, 2024
Configure your Android VR app’s manifest with the necessary VR settings for development as shown in the following manifest segment.
Note: These manifest requirements are intended for development and differ from our submission requirements. Before submitting your application, please be sure to follow the manifest requirements described at Application Manifests for Release Builds in the Distribute section.
<manifest
     xmlns:android="http://schemas.android.com/apk/res/android"
     package="<packagename>"
     android:versionCode="1"
     android:versionName="1.0"
     android:installLocation="auto">
<uses-sdk
     android:minSdkVersion="29"
     android:targetSdkVersion="32" />
<application>
<meta-data
     android:name="com.oculus.supportedDevices"
     android:value="quest2|questpro|quest3|quest3s"/>
<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">
    <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>
</application>
</manifest>
  • Replace <packagename> with your actual package name, such as “com.mycompany.myapplication”.
  • The Android theme should be set to the solid black theme for comfort during application transitioning: Theme.Black.NoTitleBar.Fullscreen
  • The required screen orientation is landscape: android:screenOrientation="landscape".
  • It is recommended that your configChanges are as follows: android:configChanges="density|keyboard|keyboardHidden|navigation|orientation|screenLayout|screenSize|uiMode".
  • Do not add the noHistory attribute to your manifest.
  • <uses-feature android:name="android.hardware.vr.headtracking" android:required="true" android:version="1" /> is required for v2 signing, which is required for store review for Meta Quest apps.
  • minSdkVersion and targetSdkVersion must be set appropriately in the build.gradle file. Increasing minSdkVersion can cause your application to no longer run on older-generation headsets. In Android Studio, these values can be set from the Properties and Default Config sections at File > Project Structure > Modules.
The following table contains the recommended values for minSdkVersion and targetSdkVersion. Setting the optional compileSdkVersion ensures you receive up-to-date compiler error messages.
DeviceminSdkVersiontargetSdkVersioncompileSdkVersion (optional)
Meta Quest 1 (only)
29
29
29
Meta Quest 1/2/Pro/3
29
32
32
Meta Quest 2/Pro/3 (only)
32
32
32
Applications submission requirements may require additional adjustments to the manifest. Please refer to Application Manifests for Release Versions in our Publishing Guide.

Compatibility Mode

In order to support forward compatibility for future devices, applications will run in Compatibility Mode for the oldest headset that’s SDK version is supported by the application. When this occurs, the runtime reports the current headset as a previous generation headset, and maximizes compatibility by modifying internal behavior as needed to best run on Quest headsets. Note that this does not reduce processor speeds.
Compatibility mode for more details about this behavior, and for recommended APIs for determining the model of device your app is currently running on.
When you create apps that target Meta Quest, Quest 2, or Quest Pro, you can check device capabilities before using them, or use a runtime method to detect the device that app is running on. You can then enable extra features to improve the user experience for apps running on Meta Quest 2 or Meta Quest Pro.

Add Supported Devices to the Manifest

To indicate that an application supports all current devices, the following entry should be added to the Android manifest:
<meta-data android:name="com.oculus.supportedDevices" android:value="quest2|questpro|quest3|quest3s"/>
If this manifest entry isn’t present, regardless of SDK headers or other factors, the application will run in compatibility mode, as a “Meta Quest” (if SDK version 29 is supported), or “Meta Quest 2” (if SDK version 32 is supported).
If your application’s minSdkVersion is greater than 29, you should not list quest as one othe the supportedDevices, as the Meta Quest 1 OS has not been updated to support SDK versions after 29.

Check Capabilities Where Possible

Remember that although checking the device type has valid use cases, you should always use capability-based checking where you can.
For example, checking through OpenXR if the device supports eye tracking will provide better support then checking if the device is a Meta Quest Pro.
Did you find this page helpful?
Thumbs up icon
Thumbs down icon