cancel
Showing results for 
Search instead for 
Did you mean: 

Documentation to Package for Oculus Quest?

Slayemin
Expert Protege
I need to package a build for the oculus quest and I can't seem to find any documentation on either the Oculus site or the UE4 documentation site. Does anyone know of any good reference docs for packaging a build for Oculus Quest, or have a good packaging workflow & list of settings?
6 REPLIES 6

AlanOToole
Adventurer
Hi @Slayemin,

As far as I know nothing official has been released regarding that yet. I did see that the general documentation for everything will be released when the Quest is publicly available. 

I hope this helps!
-Alan

Slayemin
Expert Protege
Okay, I've figured it out. Generally speaking, you just follow the configuration settings to package for the Oculus Go device. I had to stumble my way through a bunch of packaging errors and change project settings. Here's a bunch of general gotchas to double check:

1) Make sure that your android installed packages are up to date. This is not well documented, but you basically need to open a command prompt, go to C:\NVPack\android-sdk-windows\tools\bin and then manage the installed packages through sdkmanager using the command line interface. Using the SDK manager GUI will not allow you to accept the license agreements, which is super frustrating. You should have build-tools;26.0.1 installed at a minimum.

2) You will also need to generate a keystore file using the keytool. There's external documentation on how to do that.

3) You'll also get a packaging error which says that you don't have an entitlement check. You need to open up Unreal Engine in visual studio and then navigate to: Plugins\Runtime\Oculus\OculusVR\Source\OculusHMD\GearVR_APL.xml and comment out "com.oculus.svclib.OVREntitlementChecker.doAutomatedCheck(this);" on line 211.

4) In project settings -> Android, I used
Minimum SDK Version : 23
Target SDK version: 26
Install Location: Auto
Extra tags for manifest node (array) needs to have:
      excludeFromRecents="true"
added to it
Configure the AndroidManifest for deployment to Oculus Mobile = true
Support Arm64 = true
Support Armv7 = false

5) You can package for ETC2 or ASTC

I also enabled support for large OBB files, which lets you create packages up to 4gb in size instead of the standard 2gb.

6) If you're uploading a build to the oculus store, make sure that your build configuration is set to shipping and for distribution is set to true. (Project Settings -> Packaging) Also, make sure that your visual studio solution configuration is set to "shipping" instead of "DebugGame Editor" or "Development Editor". I also do a full rebuild here.

7) To upload the APK and OBB to the oculus store, use their ovr-platform-util. It's available for download on the store page. This is the only way to bundle an OBB file with your APK (uploading a build through the store UI doesn't seem to support this)

😎 Just as a sanity check, you should also push the packaged build to your Quest device and test it thoroughly before you upload it. If you have packaging errors, you can also hook your Quest up to your dev machine and use the UE4 "Launch Application" button and launch it directly to the device. If there's errors here, you can troubleshoot your ADB and android settings.

rvelasco
Honored Guest
Thanks for the info.  Unfortunately I found this after having to stuggle to figure it out on my own. Except some settings you suggested, I had not tried.  The setting to 'Configure the AndroidManifest for deployment to Oculus Mobile = true' is what did it for me after not finding some Oculus settings outlined in the "getting started".  

In regards to #3, I also ran into this issue (Quest only, Rift works fine). Disabling the check in the engine level seems like a work around. The AppId I used was for a "Mobile" app (Only Go / Gear are listed) but still didn't work.  I'm not sure of what the "right" way of passing the entitlement check is.

Good luck with your project.

beaulima9933
Expert Protege
@Slayemin
Support Arm64 = true
Support Armv7 = false
Is not the Quest a 32-bits machine, like the Go?
Anyway, if you use the latest expressive avatars, some functions are not working in x64.

Slayemin
Expert Protege


@Slayemin
Support Arm64 = true
Support Armv7 = false
Is not the Quest a 32-bits machine, like the Go?
Anyway, if you use the latest expressive avatars, some functions are not working in x64.


I had to double check. The Quest uses the Snapdragon 835 processor which is a 64 bit chip. It's capable of supporting 32 bit instructions, but like all 64 bit chips, its native instruction set is in 64 bits. If you use a 32bit instruction set, the processor still uses 64bit instruction sets, just half the bits in the instruction are unused and it actually costs you performance on the backend because the processor needs to spend time converting 32bit instructions into 64bit instructions. 99% of this should be taken care of for you by selecting the correct configuration.

https://www.qualcomm.com/products/snapdragon-835-mobile-platform

YQ-Oculus
Honored Guest
Using BuildForArm64=True in Unreal (4.22.3) actually makes the app not load for me. Armv7 it does work.