Android Manifest 中的 versionCode 与 versionName

Posted

技术标签:

【中文标题】Android Manifest 中的 versionCode 与 versionName【英文标题】:versionCode vs versionName in Android Manifest 【发布时间】:2012-03-26 14:42:25 【问题描述】:

我的应用在 android 市场上,版本代码 = 2,版本名称 = 1.1

但是,今天更新的时候,我在manifest中更改了version code = 3,却错误地将我的版本名称更改为1.0.1并将apk上传到市场。

现在,我的应用用户是否会在手机上收到更新通知?还是我应该重做一遍这个过程?

【问题讨论】:

试试这个链接它会帮助你..“developer.android.com/tools/publishing/…” 他们应该,因为您增加了版本代码。理论上哪个是用作更新标记的。 @user838522 您能否将投票最多的答案标记为所选答案? @CarlosAlbertoMartínezGadea:user838522 最后一次出现是在 2013 年 【参考方案1】:

Reference Link

android:versionCode

内部版本号。此数字仅用于确定一个版本是否比另一个版本更新,数字越大表示版本越新。这不是向用户显示的版本号;该数字由 versionName 属性设置。 该值必须设置为整数,例如“100”。您可以根据需要定义它,只要每个后续版本都有一个更高的数字。 [...]

android:版本名称

向用户显示的版本名称。此属性可以设置为原始字符串或字符串资源的引用。该字符串除了显示给用户之外没有其他用途。 versionCode 属性保存内部使用的重要版本号。

很明显,versionName 只是向用户显示的内容,versionCode 才是最重要的。继续增加它,一切都应该很好。

【讨论】:

这意味着两者之间没有数学关系。是吗? 这解释了 silent 更新似乎是相同的版本。 仅添加注释:Google Play 允许 versionCode 的最大值为 2100000000 是否必须将更新后的版本与Play商店中应用程序的先前版本之间的版本代码差异保持为1? @sivaram 没有。完全没有。【参考方案2】:

不需要颠倒你的步骤。随着您增加 VersionCode,这意味着您的应用程序已经升级。 VersionName 只是一个字符串,它呈现给用户以供用户阅读。 Google play 不会根据 VersionName 采取任何行动。

【讨论】:

【参考方案3】:

版本代码 - 这是一个正整数,用于与其他版本代码进行比较。它不会显示给用户,它只是为了以某种方式保存记录。您可以将其设置为您喜欢的任何整数,但建议您为后续版本线性递增它。

版本名称 - 这是用户看到的版本字符串。它不用于内部比较或任何其他用途,仅供用户查看。

例如:假设你发布了一个应用程序,它的初始 versionCode 可能是 1,versionName 也可能是 1。一旦你对应用程序进行了一些小的更改并想要发布更新,你会将 versionName 设置为“1.1”(因为更改不是主要的),而逻辑上您的 versionCode 应该是 2(无论更改的大小如何)。

假设在另一种情况下,您发布了一个完全改进的应用版本,您可以将 versionCode 和 versionName 设置为“2”。

希望对您有所帮助。

您可以阅读更多关于它的信息here

【讨论】:

“假设在另一种情况下,您发布了一个完全修改过的应用版本,您可以将 versionCode 和 versionName 设置为“2”。” 如果此时 versionCode 为 137,那么你仍然允许将 versionCode 设置为 2 吗?【参考方案4】:

版本代码被 google play store 用于新的更新。 版本名称会显示给用户。 如果您增加了版本代码,那么所有用户都可以看到更新。

如需更详细信息,请花 2 分钟阅读本文https://developer.android.com/studio/publish/versioning.html

【讨论】:

【参考方案5】:

我将向您解释我能找到的关于该主题的唯一文档。

“例如检查升级或降级关系。”

“您应该确保应用程序的每个后续版本都使用更大的值。系统不会强制执行此行为”

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

【讨论】:

所以我可以把它留在这里吗?因为我认为 android 系统会根据版本代码而不是版本号检查应用更新。如果我错了,请纠正我。【参考方案6】:

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

该值是一个整数,以便其他应用程序可以通过编程方式对其进行评估,例如检查升级或降级关系。您可以将该值设置为您想要的任何整数,但是您应该确保应用程序的每个后续版本都使用更大的值。系统不强制执行此行为,但随着连续发布增加值是规范的。

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

该值是一个字符串,因此您可以将应用程序版本描述为 .. 字符串,或任何其他类型的绝对或相对版本标识符。

与 android:versionCode 一样,系统不会将此值用于任何内部目的,除了使应用程序能够将其显示给用户。发布服务还可以提取 android:versionName 值以显示给用户。

通常,您会发布应用程序的第一个版本,并将 versionCode 设置为 1,然后在每次发布时单调增加该值,无论该版本是主要版本还是次要版本。这意味着 android:versionCode 值不一定与用户可见的应用程序发布版本非常相似(请参阅下面的 android:versionName)。应用程序和发布服务不应向用户显示此版本值。

【讨论】:

【参考方案7】:

它确实是基于 versionCode 而不是 versionName。但是,我注意到在 Android Studio - Gradle 构建系统中更改 AndroidManifest.xml 中的 versionCode 是不够的。我需要在 build.gradle 中更改它。

【讨论】:

【参考方案8】:

版本代码 表示您的代码的版本,无论此代码是旧的还是新的,android 操作系统都会使用此变量检查更新。

版本名称 以格式表示版本名称-

(主要).(次要).(点)

字符串,仅用于可读字符串,功能版本代码已被操作系统使用。

【讨论】:

【参考方案9】:

给定版本号 MAJOR.MINOR.PATCH,增加:


当您进行不兼容的 API 更改时的主要版本, 以向后兼容的方式添加功能时的次要版本,并且 当您进行向后兼容的错误修复时的 PATCH 版本。

版本代码和版本名称

您可能知道,在 android 上,您必须为应用定义两个版本字段:版本代码 (android:versionCode) 和版本名称 (android:versionName)。版本代码是一个增量整数值,表示应用程序代码的版本。版本名称是一个字符串值,代表向用户显示的“友好”版本名称。

【讨论】:

【参考方案10】:

版本代码

用作内部版本号的正整数。此数字仅用于确定一个版本是否比另一个版本更新,数字越大表示版本越新。这不是向用户显示的版本号;该数字由下面的versionName 设置设置。 Android 系统使用versionCode 值防止用户安装低于其设备上当前安装版本的versionCode 的APK,从而防止降级。

该值是一个正整数,以便其他应用可以通过编程方式对其进行评估,例如检查升级或降级关系。您可以将该值设置为您想要的任何正整数,但是您应该确保应用程序的每个后续版本都使用更大的值。您无法将带有 versionCode 的 APK 上传到 Play 商店,而您已经在之前的版本中使用过。

版本名称

用作向用户显示的版本号的字符串。此设置可以指定为原始字符串或对字符串资源的引用。

该值是一个字符串,因此您可以将应用程序版本描述为 .. 字符串,或任何其他类型的绝对或相对版本标识符。 versionName 除了显示给用户之外没有其他用途。

【讨论】:

【参考方案11】:

来自Tanoh 的answer 可以使用一些说明。 VersionCode 等效于内部版本号。所以通常一个应用程序在发布之前会经历很多次迭代。其中一些迭代可能会以 alpha、beta 和实际版本的形式进入 Google Play 商店。每个连续的迭代都必须有一个递增的 versionCode。但是,通常您只在公开发布之间增加 versionName。这两个数字都很重要。您的用户需要知道他们手机上的版本是否是最新的(versionName),并且 Play 商店和 CI 系统(例如 bitrise)依赖和/或更新内部版本号(versionCode)

【讨论】:

【参考方案12】:

我猜用户仍会收到更新通知,因为您增加了 VERSION CODE。但是您的版本名称将向用户显示为 1.0.1。

【讨论】:

以上是关于Android Manifest 中的 versionCode 与 versionName的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式从 android 中的 manifest.xml 检索权限

错误:Android 12 中的 INSTALL_PARSE_FAILED_MANIFEST_MALFORMED

AAPT 错误:<manifest> 标记中的属性“包”不是有效的 Android 包名称

与 android manifest 上的活动标签冲突:Unity3d 中的 Facebook 和 Google Play 游戏

android开发中怎么获取manifest.xml文件中的信息

APK注入,重新编译android manifest