在Android清单中使用MAJOR.MINOR.PATCH转换为versionCode的整数

时间:2019-04-14 07:14:08

标签: android xamarin.android

我正在寻找对我的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 

这似乎是设置版本代码的一种合理方法,还是我应该坚持使用一个递增的整数,如果我忘记了哪个版本,可能会使我感到困惑?

2 个答案:

答案 0 :(得分:5)

就像世界上每个开放的问题一样,这取决于您的个人使用情况,因此我将解释我在我从事的不同项目中所做的工作以及感觉:

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

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

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

以我的个人经验,只知道versionCode并需要猜测versionName真是太奇怪了。对我来说,versionCode只是您需要为发行版增加的数字,因此,为此而获得的最简单,更自动的系统越好。我个人非常喜欢提交解决方案,因为您无需执行新的提交就不需要上载任何新的apk,因此它真的很有用,并且您无需手动对其进行增量。

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

答案 1 :(得分:1)

看完您的问题后,我相信这里要解决的问题是您不想让哪个版本名映射到哪个版本代码以防万一,以防万一。

简而言之,为帮助您 Google Play控制台,它已经显示了哪个版本具有哪个版本代码。因此,无需记住它。 Google Play控制台已经对此进行了处理。

要使您的发行版本在Play控制台中更容易识别,请添加一个对您有意义的发行版本名称,例如内部代号(“香蕉”或“超级碗”)。

enter image description here

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

  1. 版本名称-用作显示给用户的版本号的字符串。除了向用户显示之外,versionName没有其他用途。我建议保持简单。例如,像1.1.0这样的次要版本,而对于主要版本来说是2.0.0。

  2. 版本代码-一个正整数,用作内部版本号。此数字仅用于确定一个版本是否比另一个版本新,更高的数字表示最新版本。这不是显示给用户的版本号。这应该是增量