Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does Cordova/Phonegap append 8 to my Android Version Code?

I am currently working on a Cordova project and had the problem that 8 was appended mysteriously to the versionCode of my project. For example: My original Version code was 100, the new Version code is 1008

I tracked the problem through my whole build pipeline and found the responsible code in the Gradle Build script.

if (Boolean.valueOf(cdvBuildMultipleApks)) {     productFlavors {         armv7 {             versionCode cdvVersionCode ?: defaultConfig.versionCode + 2             ndk {                 abiFilters "armeabi-v7a", ""             }         }         x86 {             versionCode cdvVersionCode ?: defaultConfig.versionCode + 4             ndk {                 abiFilters "x86", ""             }         }         all {             ndk {                 abiFilters "all", ""             }         }     } } else if (!cdvVersionCode) {   def minSdkVersion = cdvMinSdkVersion ?: privateHelpers.extractIntFromManifest("minSdkVersion")   // Vary versionCode by the two most common API levels:   // 14 is ICS, which is the lowest API level for many apps.   // 20 is Lollipop, which is the lowest API level for the updatable system webview.   if (minSdkVersion >= 20) {     defaultConfig.versionCode += 9   } else if (minSdkVersion >= 14) {     defaultConfig.versionCode += 8   } } 

I am not sure why cordova thinks it is correct to change my version code, and additionally, I am not sure if this behaviour is correct ... shouldnt it add the number and not append it?

Can I just remove the corresponding section in the build.gradle or is there some hidden sense behind this behaviour?

like image 480
Paul Weber Avatar asked Oct 05 '15 14:10

Paul Weber


2 Answers

O.K. seems like this is a major unresolved bug in Cordova Version 5 and up. Here is the link to the ticket.

I had no problem when removing the offending code from my build.gradle

like image 117
Paul Weber Avatar answered Oct 14 '22 13:10

Paul Weber


The platforms\android\build.gradle script will add 4, 2, 8 or 9 to the version file dependent on targeted architecure - arm / x86 or the targeted api version of android .

I had a situation where my project had a "8" appended to the version number, and this was uploaded to the Play store. Further builds seemed to have dropped the 8, which meant I was unable to upload further updates - a cordova prepare command recreates the AndroidManifest.xml file, overriding manual changes to this.

The version issue can be addressed by creating a platforms\android\gradle.properties file with the contents cdvVersionCode=13008

Alternatively, in my case, I inserted a android-versionCode attribute into the config.xml:

<widget xmlns:cdv="http://cordova.apache.org/ns/1.0" xmlns:vs="http://schemas.microsoft.com/appx/2014/htmlapps" id="uk.co.my.app" android-versionCode="103008" version="1.3.0" xmlns="http://www.w3.org/ns/widgets" defaultlocale="en-GB"> 

The desired android version, in my case 103008 is then correctly written to the AndroidManifest.xml file used for the build.

Downside is having to manually update the android version, upside, can upload the apk!

like image 29
ChilledFlame Avatar answered Oct 14 '22 14:10

ChilledFlame