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 游戏