How To Change versionCode in cordova / Ionic Apps For Android

In this post we will take a look at how you can set versionCode in you cordova / Ionic apps while building for android.

Before we take a look at how to set versionCode, let’s first understand what a versionCode is. versionCode is an integer number which is used to keep track of app versions. The grater the versionCode, the latest version of you app. This versionCode is not show to the user. This is just for internal tracking by the PlayStore. For a more detailed definition take a look at the Android docs here.

The gratest value of the versionCode can be 2100000000.

You are required to increment the versionCode of your app every time you push a new update to you app. If you do not increment the versionCode then while uploading your app PlayStore will give you an error saying Your APK's version code needs to be higher than <previous versionCode>.

Now let me tell you why I needed to write this post. It turns out that there is a bug in the build system of android-gradle which appends 8 to the version code that you have set. For example, you have set your app’s versionCode to 1, but when you build your app using corova / Ionic the app will have the version code of 18. As you can see that 8 is being appended. As the maximum number of versionCode can 2100000000, if 8 is appended each time you will be able to update your app only 9 times.

There are other solutions in different forums that tell you to change the andoridManifest.xml file, some even ask you to change the gradle build file. I would stay away from all of these solutions as they are temporary. This is because andoridManifest.xml and the gradle file are dynamically added and generated during compile time. Which means that things can change when you run the build command.

How to Solve Cordova / Ionic Appends 8 To versionCode?

Let us now get started with the solution. I will be mentioning the solution for both Corodva and Ionic.

For Cordova

We can use the following build command.

1

cordova build--release android----versionCode=3

Note that we are passing the versionCode CLI parameter with the value of 3.

For Ionic

Ionic nests the cordova command on level deep. So for Ionic we will use the following build command.

1

ionic cordova build android--release------versionCode=3

Note the extra -- in the command.

How To Check Cordova / Ionic versionCode?

You can check all the build info of the apk file using the aapt tool. AAPT (Android Asset Packaging Tool) is a tool that is a part of the android SDK build-tools.

This will give all the info about the apk. The output will look something as follows.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

package:name='io.ionic.starter'versionCode='3'versi

onName='3.0.1'platformBuildVersionName='6.0-2704002'

sdkVersion:'16'

targetSdkVersion:'23'

uses-permission:name='android.permission.INTERNET'

application-label:'MyApp'

application-icon-120:'res/drawable-ldpi-v4/icon.png'

application-icon-160:'res/drawable-mdpi-v4/icon.png'

application-icon-240:'res/drawable-hdpi-v4/icon.png'

application-icon-320:'res/drawable-xhdpi-v4/icon.png'

application-icon-480:'res/drawable-xxhdpi-v4/icon.png'

application-icon-640:'res/drawable-xxxhdpi-v4/icon.png'

application:label='MyApp'icon='res/drawable-mdpi-v4/icon.png'

launchable-activity:name='io.ionic.starter.MainActivi

ty'label='MyApp'icon=''

feature-group:label=''

uses-feature:name='android.hardware.touchscreen'

uses-implied-feature:name='android.hardware.touchscreen'reason='default feature for all apps'

main

supports-screens:'small''normal''large''xlarge'

supports-any-density:'true'

locales:'--_--'

densities:'120''160''240''320''480''640'

This way you can check the versionCode of you release apk before uploading it to the PlayStore.

Conclusion

Setting the versionCode for cordova / Ionic has been an issue for quiet some time. Using the CLI parameter solves this. A thing to note is that the CLI parameter will override the value of versionCode set in the config.xml file.

Leave Me Your Questions And Feedback

Getting your feedback inspires me the most so hit me up in the comments here or on the comments section on my YouTube Channel or on twitter @uncutAcademy