繁体   English   中英

Android versionName / versionCode (Manifest) 的最大长度

[英]Maximum Length of Android versionName / versionCode (Manifest)

我正在尝试找出 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文档:

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

编辑 - Android 文档明确指出 -

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

基于oracle文档:

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

android:versionName — 一个string值,表示应用程序代码的发布版本,因为它应该向用户显示。

关于String最大长度, 这个问题可能对你有帮助。

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

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

警告:Google Play 允许versionCode最大值是2100000000


在此处交叉发布以提高可见度。

谷歌最近好像有变化,最大versionCode只有20亿。

参考帖子: Google Play Developer Console 错误:您的 APK 的版本代码很高,您可能无法更新您的 APK


PS:打算参考官方文档中提到的最大值为2147483647的朋友,请先阅读我引用的帖子中的答案。 它提到截至当前日期(08/10/2016),它仍未更新。

让我们看看 网站

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 值以显示给用户。

这是一个字符串,所以它没有最大值。

我有一个应用程序,其版本字符串和代码的格式为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 的情况下,但那将是一个全新的应用程序并且您将丢失所有内容(评论等)。 ))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM