43

We always have to increment versionCode by some arbitary number to publish it to google play.
Is there limit to that value and what will happen if it is reached?

defaultConfig {
        applicationId "my.app"
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 65
        versionName "1.05"
        setProperty("archivesBaseName", "myapp-$versionCode")

    }
Zoe
  • 27,060
  • 21
  • 118
  • 148
Yarh
  • 4,459
  • 5
  • 45
  • 95

4 Answers4

60

Update 08/11/2016 (UTC):

The docs has been updated. Not the old MAX_INT value nor the 2000000000.

Warning: The greatest value Google Play allows for versionCode is 2100000000.


Cross-post for visibility here.

It seems there was a recent change in Google, making the maximum versionCode up to 2000000000 only.

Reference post: Google Play Developer Console error: The version code of your APK is high and you risk not being able to update your APK


PS: For those who are planning to provide reference to the official documentation where the mentioned max value is 2147483647, please read the answer first in the post I referenced. It mentions that as of current date (08/10/2016), its still not updated.

AL.
  • 36,815
  • 10
  • 142
  • 281
  • This makes no sense as the given number is about `150 000` smaller than `MAX_INT`. – xenteros Aug 09 '16 at 10:24
  • @xenteros Have you tried updating an app with a `versionCode` higher than that value? Test it out. If you were able to, I'd remove this answer. – AL. Aug 10 '16 at 02:05
  • I imagine this number was chosen because it allows dated versions 20190313xx. 100 builds per day until 2100 should be enough. – Nuno Cruces Mar 13 '19 at 23:32
  • @NunoCruces fair point, though 2147483647 also does that. The only thing I can think of is that 2147483647 is less memorable! – Mark Apr 18 '22 at 03:12
17

According to android documentation and the gradle DSL documentation:

android:versionCode — An integer value that represents the version of the application code, relative to other versions.

Checking the java doc, by default, the int data type is a 32-bit signed two's complement integer, which has a minimum value of -2^31 and a maximum value of (2^31)-1.

Then the maximum value is 2^31-1.

Gabriele Mariotti
  • 320,139
  • 94
  • 887
  • 841
  • Here is the doc of the Android Gradle DSL - link http://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.ProductFlavor.html#com.android.build.gradle.internal.dsl.ProductFlavor:versionCode – appersiano Feb 08 '16 at 17:08
  • That doesn't help you at all though, if you want to publish your app on the Google Play Store which only accepts a certain amount of version numbers. – Kleysley Jun 10 '21 at 18:54
9

Starting at Android Pie (9), the version code will be a long (source). The max value of a long is 9,223,372,036,854,775,807 so you shouldn't run into any issues regarding length here.

Do note that it's still an int in older android versions, so long is only relevant to you when your minSdkVersion is 28 or higher.

Jayen
  • 5,653
  • 2
  • 44
  • 65
Cristan
  • 12,083
  • 7
  • 65
  • 69
  • 1
    versionCode (publicly facing, play store visible versionCode) will remain a 32-bit int. The "longVersionCode" referred to here is a bit mask of this 32-bit versionCode in the lower bits and the manifest value "versionCodeMajor" in the upper 32-bits. versionCodeMajor Ref: https://developer.android.com/reference/android/R.styleable.html#AndroidManifest_versionCodeMajor – Emilie Mar 08 '19 at 15:45
  • That doesn't help you at all though, if you want to publish your app on the Google Play Store which only accepts a certain amount of version numbers. – Kleysley Jun 10 '21 at 18:54
  • I'm confused. I thought the version code was supposed to encode things like ABI, so that, for example, a device that supports arm 64 bit and 32 bit, will get the 64 bit libs as priority. But the docs now indicate that when uploading multiple APKs (e.g. split by ABI) they should have same versionCode. – Mark Apr 18 '22 at 03:09
8

The other responses are technically true but you should note that Google Play Store only accepts version codes up to 2100000000.

Yasan Glass
  • 1,159
  • 9
  • 10