cancel
Showing results for 
Search instead for 
Did you mean: 

APK validation error: GLES not specified validation error

jhhoward
Explorer
I am having a problem with uploading an APK to a release channel. The full error message is as follows:

> GLES version not specified (android:glEsVersion in AndroidManifest.xml). GLES version of 2.0 or greater should be used.

I have seen similar posts in the forum but this used to be a warning which you could ignore, but now it is treated as an error so I am blocked on it.

I am using Unity 2018.4.12 LTS with Oculus Utilities 1.36.0 (latest as of posting) and used the option to generate a store compatible AndroidManifest.xml as described here:
https://developer.oculus.com/distribute/latest/concepts/publish-mobile-manifest/

In the Unity player settings I have set OpenGL ES 3 as the only Graphics API selected and ticked the 'require ES 3.1' option. This adds the following line to the AndroidManifest.xml that Unity generates:
<uses-feature android:glEsVersion="0x00030001"  />

I have checked this in the manifest file that appears in the staging folder when building the APK. I have also tried manually adding it to the AndroidManifest.xml that the Oculus Utilities script generates but this makes no difference.

It appears to be a bug in the validator and it is blocking me from uploading any new builds. Does anyone have any suggestions?
1 ACCEPTED SOLUTION

Accepted Solutions

jhhoward
Explorer
OK so after some further investigation, I found that the AndroidManifest.xml that was in Unity's staging area was *not* the same as the one actually bundled in the APK. I used apktool to unpack the APK and found that the 'uses-feature android:glEsVersion' tag was indeed missing from the manifest.

When I switched the build system from 'Gradle' to 'Internal' in the build settings, this stopped happening.

I did experience some issues with code signing as you described, as Oculus won't allow V2 or V3 uploads for Go/Gear VR. I have a simple batch file which resigns with the appropriate method:

"c:\Program Files\Java\jdk1.8.0_131\bin\jarsigner" -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore path/to/my.keystore my-app-name.apk my-app-key-alias

View solution in original post

6 REPLIES 6

nickpittom
Protege
I'm getting this problem with builds from Unity as well. Going via Android studio I can add the line to the manifest. However, uploading this version, it them tells me I need to ensure it's signed, but it is signed with a keystore and V2 via the "Build signed APK" - it reports success.

jhhoward
Explorer
OK so after some further investigation, I found that the AndroidManifest.xml that was in Unity's staging area was *not* the same as the one actually bundled in the APK. I used apktool to unpack the APK and found that the 'uses-feature android:glEsVersion' tag was indeed missing from the manifest.

When I switched the build system from 'Gradle' to 'Internal' in the build settings, this stopped happening.

I did experience some issues with code signing as you described, as Oculus won't allow V2 or V3 uploads for Go/Gear VR. I have a simple batch file which resigns with the appropriate method:

"c:\Program Files\Java\jdk1.8.0_131\bin\jarsigner" -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore path/to/my.keystore my-app-name.apk my-app-key-alias

t3mr0i
Honored Guest
I have the same issue and since "internal build" was removed in the latest version, I cannot find a way around it. When I edit the androidmanifest.xml with the correct lines for gles, its still throwing the same error. 

ERROR: Validation identified the following errors:


GLES version not specified (android:glEsVersion in AndroidManifest.xml). GLES version of 2.0 or greater should be used.


Punchey
Explorer
Same issue here.  Never got this previously, but now I'm getting the same error.  Unity version is 2019.3 using Universal Render Pipeline.

kike_tm
Honored Guest
I was having this very same problem when I switched a project to Unity 2019.3
I solved it by recreating the AndroidManifest file using the menu under Oculus -> Tools -> Update AndroidManifest.xml and the latest Oculus integration.
My previous manifest already had the correct GLES version specified, but for some reason maybe related to new data being added the new one was validated correctly.

solaris.nite
Protege

For me, this ended up being a bug in the Oculus Unity native support package (we aren't using the XR Plugin Management Framework). I updated the oculus support package to fix this bug. There are numerous bugs related to AndroidManifest in the changelog. You can check the changelog here.

 

[2.38.5] - 2019-12-04
Fixed an issue introduced in 2.38.4 where some entries in a custom AndroidManifest.xml were getting removed when V2 signing was enabled.