使用MAJOR.MINOR.PATCH转换为Android Manifest中的versionCode的整数

问题描述 投票:1回答:2

我正在寻找方法来版本化我的Android应用程序。我想不要对我使用的版本号感到困惑,所以我在考虑这个:

Version Name: 0.1.2   Version Code:    102
Version Name: 1.1.0   Version Code: 101000
Version name: 2.0.0   Version Code: 200000

etc 

这看起来像是设置版本代码的合理方式,还是我只是坚持使用增量整数,如果我忘记了哪个版本,我担心这可能会让我感到困惑?

android xamarin.android
2个回答
1
投票

在查看了您的问题之后,我认为这里要解决的问题是您不希望混淆哪个版本名称映射到哪个版本代码以防您忘记。

总之,为了帮助您使用Google Play控制台,已经显示哪个版本具有哪个版本代码。因此无需记住它。谷歌播放控制台已经完成了这项工作。

要使您的发布更容易在Play控制台中识别,请添加对您有意义的发布名称,例如内部代码名称(“Banana”或“Super Bowl”)。

enter image description here

让我们进一步了解他们的用法:

  1. 版本名称 - 用作向用户显示的版本号的字符串。除了向用户显示之外,versionName没有其他用途。我建议保持简单。例如1.1.0等次要版本,主要版本为2.0.0。
  2. 版本代码 - 用作内部版本号的正整数。此数字仅用于确定一个版本是否比另一个版本更新,更高的数字表示更新的版本。这不是向用户显示的版本号。这应该是增量的。

5
投票

就像世界上每一个开放的问题一样,这取决于你的个人用途,所以我将解释我在不同的项目中所做的事情以及它的感受:

增量数:这是最简单,最直接的解决方案。大多数早期项目都以此为开端。如果您有版本代码,则不容易知道版本名称是哪个。如果从1开始,将很难达到限制(2100000000)。您需要手动增加此值,与versionName无关。

将name映射到int:任何函数,如f(M,m,h) = 10^6 * M + 10^4*m + 10^2*h。这看起来很聪明,因为您可以从versionCode轻松识别您的版本名称。但是,根据您的versionName更改的速度以及映射函数中每个变量的权重,它可能会重叠并产生混淆。并且可能更容易达到Play商店限制。理想情况下,您只需更改版本名称,您将拥有一个计算版本代码的函数。

提交编号:只需使用git rev-list HEAD --count。这不会映射到版本名称,但会在创建apk时提供有关repo中提交次数的更多信息。您不需要手动处理它,也很难达到极限。如果您提交任何内容,即使您不更改版本名称,它也会增加。如果构建CI,则需要克隆整个repo而不是深度1,这可能会使您的gradle构建速度稍微慢一些(10K提交时间不到0.1秒)。

根据我的个人经验,只知道versionCode并且需要猜测versionName是如此奇怪。对我来说,versionCode只是你需要为你的版本增加的数字,所以你得到的最简单,更自动的系统越好。我个人非常喜欢提交解决方案,因为你不需要上传任何新的apk而不进行新的提交,所以非常有用,你不需要手动增加它。

理想情况下,您只对版本名称感兴趣。你应该确保它有意义,它会帮助你。您可以使用Semantic Versioning或创建自己的系统,只要您设置明确的规则并帮助您识别您发布的代码。

© www.soinside.com 2019 - 2024. All rights reserved.