Google Play: Error 103 during installation

I’m getting frequent negative reviews of error -103 preventing people from installing my apps from Google Play.

The issue seems to be due to the Java version used when signing the apk. See post on Stack Overflow:

http://stackoverflow.com/questions/33149140/play-store-cant-install-app-error-code-103

Basically, the jarsigner in Java 7 and above uses a default hash method that older devices do not support. 

Question: Is this something I can avoid by downgrading my local Java version, or is the jarsigner run as part of the build on Corona’s servers?

You can probably downgrade to an older Java JDK and solve this. If you’re using 1.7.x then you will need to drop to 1.6. If you’re on 1.8, then try dropping to 1.7.

I’ll share this with our engineers to see if we can include all the parameters needed to use later versions of Java.

Rob

Thanks for the update Rob. I’ll drop to 1.6,  32-bit.

Rob, any news from the engineers?

We are going to need a feature request for this.  Please visit http://feedback.coronalabs.com and add a new entry or search for something similar and get it voted up.

Rob

http://feedback.coronalabs.com/forums/188732-corona-sdk-feature-requests-feedback/suggestions/19047862-google-play-error-103-during-installation

Basically, the jarsigner in Java 7 and above uses a default hash method that older devices do not support. 

I’ve had reports of failed installs after a recent update too, do you happen to know what type of “older devices” are susceptible?

Are you saying that the fix at present is to re-run jarsigner ourselves on the returned server-signed apk?

Presumably followed by an obligatory zipalign too.  (otherwise i’m not sure why the local version of java would matter for SDK, thus a bit of confusion)

Dave, there is a bit of an overview here: https://software.intel.com/en-us/forums/intel-xdk/topic/622990

“The keystores generated by the new build system generate signatures using a SHA256 algorithm, which does not work with some older Android devices (mostly pre Android 4.3). This means that builds made with the new cert management system currently create APK files that may not install on some Android 4.0-4.2 devices (some devices will install, some will fail, depends on the manufacturer).”

It seems that the jarsigner is run locally, and that the fix at present is to have JDK 1.6u45 installed rather than later JDK versions. I have had people sucessfully test builds made with JDK 1.6 on the same device that failed for builds with JDK 1.7 and 1.8. 

You can probably downgrade to an older Java JDK and solve this. If you’re using 1.7.x then you will need to drop to 1.6. If you’re on 1.8, then try dropping to 1.7.

I’ll share this with our engineers to see if we can include all the parameters needed to use later versions of Java.

Rob

Thanks for the update Rob. I’ll drop to 1.6,  32-bit.

Rob, any news from the engineers?

We are going to need a feature request for this.  Please visit http://feedback.coronalabs.com and add a new entry or search for something similar and get it voted up.

Rob

http://feedback.coronalabs.com/forums/188732-corona-sdk-feature-requests-feedback/suggestions/19047862-google-play-error-103-during-installation

Basically, the jarsigner in Java 7 and above uses a default hash method that older devices do not support. 

I’ve had reports of failed installs after a recent update too, do you happen to know what type of “older devices” are susceptible?

Are you saying that the fix at present is to re-run jarsigner ourselves on the returned server-signed apk?

Presumably followed by an obligatory zipalign too.  (otherwise i’m not sure why the local version of java would matter for SDK, thus a bit of confusion)

Dave, there is a bit of an overview here: https://software.intel.com/en-us/forums/intel-xdk/topic/622990

“The keystores generated by the new build system generate signatures using a SHA256 algorithm, which does not work with some older Android devices (mostly pre Android 4.3). This means that builds made with the new cert management system currently create APK files that may not install on some Android 4.0-4.2 devices (some devices will install, some will fail, depends on the manufacturer).”

It seems that the jarsigner is run locally, and that the fix at present is to have JDK 1.6u45 installed rather than later JDK versions. I have had people sucessfully test builds made with JDK 1.6 on the same device that failed for builds with JDK 1.7 and 1.8.