版本码是否有最大值?

时间:2016-02-08 16:59:00

标签: android gradle android-gradle build.gradle

我们总是要通过一些任意数字递增versionCode来将其发布到Google Play 该值是否有限,如果达到该值会发生什么?

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

    }

4 个答案:

答案 0 :(得分:30)

2016年11月11日更新(UTC):

docs已更新。不是旧的<a name="subscribe">Subscribe</a> 值,也不是2000000000。

  

警告:Google Play允许MAX_INT的最大值 2100000000

在这里交叉发布可见度。

最近谷歌似乎发生了一次变化,最多只有versionCode达到200,000,000。

参考文章:Google Play Developer Console error: The version code of your APK is high and you risk not being able to update your APK

PS:对于那些计划提供official documentation所提到的最大值为2147483647的人,请在我引用的帖子中先阅读答案。它提到截至当前日期(2016年10月8日),它仍未更新。

答案 1 :(得分:15)

根据android documentation和gradle DSL documentation

android:versionCode - 一个integer值,表示相对于其他版本的应用程序代码版本。

检查java doc,默认情况下,int数据类型是32位带符号的二进制补码整数,其最小值为-2 ^ 31,最大值为(2 ^ 31)-1。

然后最大值 2 ^ 31-1。

答案 2 :(得分:6)

其他回答在技术上是正确的,但您应该注意 Google Play Store only accepts version codes up to 2100000000

答案 3 :(得分:5)

从Android Pie(9)开始,版本代码为longsource)。 long的最大值为9,223,372,036,854,775,807,因此您不应在此处遇到任何有关长度的问题。

请注意,在较旧的Android版本中,它仍然是int,因此当minSdkVersion为28或更高时,这仅与您相关。