我试图找出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
是否存在最大值,或者如果没有最大值,是否存在某些规则,它是否会允许任何内容?
答案 0 :(得分:14)
android:versionCode - 一个integer
值,表示相对于其他版本的应用程序代码版本。
编辑 - Android文档明确指出 -
警告:android:versionCode的最大可能值是MAXINT (2147483647)。但是,如果您上传的是具有此值的应用,则表示您的应用 无法更新。
默认情况下,int
数据类型是32位带符号的二进制补码整数,其最小值为-2 ^ 31,最大值为(2 ^ 31)-1。在Java SE 8及更高版本中,您可以使用int数据类型来表示无符号的32位整数,其最小值为0,最大值为(2 ^ 32)-1。
android:versionName - 一个string
值,表示应用程序代码的发布版本,因为它应该向用户显示。
关于String
最大长度,this SO question可能对您有帮助。
答案 1 :(得分:9)
2016年11月11日更新(UTC):
docs已更新。不是旧versionCode
值或2000000000。
警告:Google Play允许
versionCode
的最大值 2100000000 。
在这里交叉发布可见度。
最近谷歌似乎发生了一次变化,最多只有 <!-- server action : can be called from menu and open a view from a python methode so we can change -->
<!-- server action : the context of the action -->
<record id="idOfServerAction" model="ir.actions.server">
<field name="name">Action Title</field>
<field name="condition">True</field>
<field name="type">ir.actions.server</field>
<field name="model_id" ref="model_modelName" />
<!--Ex ref='model_res_users -->
<field name="code">action = self.MethodeName(cr, uid, None, context)</field>
<!-- EX: action = self.AddUser(cr, uid, None, context) -->
</record>
<menuitem id="idOfMenuItem" name="Title of the menu" action="idOfServerAction" />
达到200,000,000。
PS:对于那些计划提供official documentation所提到的最大值为2147483647的人,请在我引用的帖子中先阅读答案。它提到截至当前日期(2016年10月8日),它仍未更新。
答案 2 :(得分:4)
让我们看一下the website。
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值以显示给用户。
这是一个字符串,因此它没有最大值。
答案 3 :(得分:0)
我有一个应用程序,其版本字符串和代码的格式为yy.mmmm.hhnn
,因此,现在,Jun 28,19:50生成了版本20.0728.1950
。我在Android和iOS上的此版本控制系统都没遇到任何问题,因此直到20.9999.9999的版本都可以。
对于Android,文档明确指出最大版本代码为2100000000(21.0000.0000),所以PANIK! =)
对于我的新版本,我正在考虑使用以下版本系统:yy.1ddd.hhnn
,其中ddd是一年中的某一天(从1到366)。由于我不能使用20以外的任何主要版本,因此我的版本将是一年中的第1个(并且我只能将应用程序更新9年以上)。
因此,请谨慎选择版本,否则,您将无法再更新应用程序(至少在不更改应用程序ID的情况下,但这将是一个全新的应用程序,并且您将丢失所有内容(评论等))