cancel
Showing results for 
Search instead for 
Did you mean: 

APK is signed with Signature Scheme V3

mouse_bear
Oculus Community Manager
Oculus Community Manager
Some of you may have encountered this error prompt recently when uploading your APK:
ERROR: APK is signed with Signature Scheme V3, which is not yet supported. Please disable signing with Scheme V3 and upload again.
Our build upload and scanning process in the past has only supported v1 APK signing. However, recent change in the process now fully enforces v1 APK signing, resulting in the message you are seeing now.

As such, if you're using Unity, you should be able to use Gradle to v1 sign. To do so, make sure you generate a custom Gradle template (https://docs.unity3d.com/Manual/android-gradle-overview.html), which should create a file called mainTemplate.gradle. Open this file in your preferred text editor and add in the following line:

v2SigningEnabled false

A perfect example of what the mainTemplate.gradle file should look like can be found here: https://developer.android.com/about/versions/nougat/android-7.0#apk_signature_v2

If you are not using Unity or prefer not to use Gradle (and want to use the regular internal build system instead), you can use jarsigner (found in your JDK bin folder) to sign your built APK with v1. To do so, use the following command (replacing the variables in <> with your app's specific arguments):

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore <KEYSTORE> -storepass <STOREPWD> -keypass <KEYPWD> <APKFILE> <ALIASNAME>
If you need immediate help or want additional support/context on an issue you are having with our platform or integrations:

1. Gather any and all logs, screenshots, and version numbers of relevant software (Oculus SDK, engine, etc.)
2. Please submit a ticket here (include what you've gathered in step 1).
3. Tag me @mouse_bear once you have done so!
14 REPLIES 14

rhillCampfire
Level 3
Hi. Where in the mainTemplate.gradle file should "v2SigningEnabled false" be included? The page you link to has it inside a release {} block and after a keyPassword line. In mainTemplate.dradle, the keyPassword line doesn't exist, thought the release {} block does. So I tried it inside the release {} block right after a line that says **SIGNCONFIG** but that failed. I also tried it instead of **SIGNCONFIG** and that failed. Etc.

Where within the mainTemplate.gradle file, should the line "
v2SigningEnabled false" be included?


pld_google
Level 3


Where within the mainTemplate.gradle file, should the line "v2SigningEnabled false" be included?


Wish I had seen this a couple days ago! I just went through this process. Add a block just below the **SIGN** block. If you need to, you can see the full expansion of the template by checking "Export" from the build dialog.

  **SIGN**
// Add this block just below **SIGN**
signingConfigs {
release {
v1SigningEnabled true
v2SigningEnabled false
}
}


vexdeveloper
Level 2
Oculus why are you still using V1? V2 and V3 signing is now a thing maybe you could update your system to be more inline with 2019 build process

doudoid
Level 3




Where within the mainTemplate.gradle file, should the line "v2SigningEnabled false" be included?


Wish I had seen this a couple days ago! I just went through this process. Add a block just below the **SIGN** block. If you need to, you can see the full expansion of the template by checking "Export" from the build dialog.

  **SIGN**
// Add this block just below **SIGN**
signingConfigs {
release {
v1SigningEnabled true
v2SigningEnabled false
}
}




GOD THANKS !

mcc
Level 4
It creates a problem for our process that the Go mandates v1 and the Quest mandates v2 signing— we do not care which signing you use, but it is inconvenient the Oculus devices disagree with each other. Is there a plan to eventually support v2 signing on the Go…? (I understand there are reasons why Gear apps still require v1 signing.)

ruibalp-oculus
Level 3
@mcc - If we added a feature to allow V2/V3 signatures for Go but prevented the binary from being visible to Gear VR, would something like that work?

mcc
Level 4
@ruibalp-oculus, that feature would be helpful to us!

Leomagpoc
Level 2
is there any news on allowing v2 signatures on go I've been trying to use a custom gradle as suggested and I am not able to get my alpha apps to work on my go. I am sure if I keep trying I will figure it out, but I am wondering if I should wait if they are planning on an easier solution soon.

JaVo93
Level 2
@NinjaGG

I have an issue with Signing for the Oculus Quest. I use the newest Oculus integration version and Unity 2019.2.
I followed your advice with the maintemplate. Unfortunately in the builded gradle:

   signingConfigs {
        release {
    v1SigningEnabled true
    v2SigningEnabled true
          
        }
    }

both is set to true, although I wrote in my template false.

The android manifest has   <uses-feature android:name="android.hardware.vr.headtracking" android:version="1" android:required="false" />

Do you have any advice please?

Edit: I got it working with zipalign and apkdesigner. 

Unfortunately when I give other users for testing purposes access they have an issue that oculus go is activated in the app settings. How I can switch to quest?