Java Android版本名/版本代码(清单)的最大长度

Java Android版本名/版本代码(清单)的最大长度,java,android,android-manifest,manifest,maxlength,Java,Android,Android Manifest,Manifest,Maxlength,我试图找出android清单文件的android:versionName和android:versionCode属性的最大长度 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.xxxx.xxxx" android:versionCode="185" <--- THIS ATTRIBUTE a

我试图找出android清单文件的android:versionName和android:versionCode属性的最大长度

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.xxxx.xxxx"
          android:versionCode="185"           <--- THIS ATTRIBUTE
          android:versionName="1.0.185">      <--- AND THIS ATTRIBUTE
基于

android:versionCode-相对于其他版本,表示应用程序代码版本的
整数值

编辑-Android文档明确说明-

警告:android:versionCode的最大可能值为MAXINT (2147483647). 但是,如果您上载具有此值的应用程序,则您的应用程序 无法更新

基于

默认情况下,
int
数据类型是一个32位带符号2的补码整数,最小值为-2^31,最大值为(2^31)-1。在JavaSE8及更高版本中,可以使用int数据类型表示无符号32位整数,其最小值为0,最大值为(2^32)-1

android:versionName-一个
字符串
值,表示应用程序代码的发布版本,应向用户显示

关于
字符串
最大长度,可能会对您有所帮助。

让我们看看

versionCode是一个整数

versionName是一个字符串

android:versionCode-相对于其他版本,表示应用程序代码版本的整数值。 该值是一个整数,因此其他应用程序可以通过编程方式对其进行计算,例如检查升级或降级关系。您可以将该值设置为所需的任何整数,但应确保应用程序的每个后续版本都使用更大的值。系统不强制执行此行为,但通过连续发布增加值是规范性的。 通常,您会在versionCode设置为1的情况下发布应用程序的第一个版本,然后在每个版本中单调增加值,而不管该版本是主要版本还是次要版本。这意味着android:versionCode值不一定与用户可见的应用程序发布版本非常相似(请参见下面的android:versionName)。应用程序和发布服务不应向用户显示此版本值

所以版本代码是一个整数。它没有指定标识或位数,但我们可以假设它不能是负数,并猜测32位。所以我们可以猜测它可能在0到2^32之间。默认情况下,Java具有带符号的32位整数,因此将提供从-2^31到2^31的值。当然,如果它是64位整数,那么它将介于0和2^64之间

android:versionName—一个字符串值,表示应用程序代码的发布版本,应该向用户显示。 该值是一个字符串,因此可以将应用程序版本描述为。。字符串,或作为任何其他类型的绝对或相对版本标识符。 与android:versionCode一样,系统不会将此值用于任何内部用途,而只是允许应用程序向用户显示它。发布服务还可以提取android:versionName值以显示给用户

这是一个字符串,因此没有最大值。

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

该文件已更新。不是旧的
MAX_INT
值或2000000000

警告:Google Play允许
versionCode
的最大值为210000000


交叉柱,以便在此处看到

谷歌最近似乎有了一个变化,使得最大
versionCode
只有2000000000个

参考职位:



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

我有一个应用程序,其版本字符串和代码格式为
yy.mmmm.hhnn
,因此,现在,6月28日19:50生成版本
20.0728.1950
。我从来没有在Android和iOS中使用过这个版本控制系统,所以直到20.9999.9999的版本都可以

对于Android,文档明确指出最大版本代码为210000000(21.0000.0000),所以PANIK!=)

对于我的新版本,我正在考虑使用这个版本系统:
yy.1dd.hhnn
,其中ddd是一年中的一天(从1到366)。由于我不能使用除20以外的任何主要版本,我的版本将是每年前一天的1(并且我只能更新应用程序9年以上)


因此,在选择版本时要小心,否则,你将无法再更新应用程序(至少在不更改应用程序id的情况下,但这将是一个全新的应用程序,你将失去一切(评论等))

好奇地想知道,这个实验有什么具体原因吗?我知道奇怪的请求;-)-我基本上希望将应用程序错误记录到外部数据库中,因此了解设置数据库字段的最大长度会很有用。您可以将x.x.x.x.x.x/x_x_x_x_x_x_x放在一起吗?或者这是标准的“x.x.x”?您可以将任何您想要的内容作为versionName。这个字符串除了显示给用户之外,不会用于任何其他用途。这仍然是真的吗?对于API 28,现在有一个返回64位整数的
getLongVersionCode()
:但是,在Google文档中,它们仍然有210000000的数字。@farindk
getLongVersionCode()
从-
返回versionCode和versionCodeMajor组合成一个长值。VersionDemajor位于32位上限。
--它只返回您在属性中设置的内容,而不确定限制。当然可以,但如果仍然是相同的32位限制,那么在API 28中将其扩展到64位的原因是什么。要么他们计划在未来增加,要么有文件证明