What is the Android Bundle Version and Version Code and how do they relate?

妖精的绣舞 提交于 2019-12-03 05:48:07

There's no "bundle version". That's an iOS/Mac term. Built Android apps are called packages.

Android has two places where a version is specified: version name (android:versionName in manifest) and version code (android:versionCode). They don't have to be corellated, but in practice they usually are. Google Market uses version code (not name) when you publish an update to make sure your update is later than the package currently published.

The version name is what the end users see. There's no limitation on its format; it's a free-text string, although the vast majority of apps stick to 1.2 or 1.2.3 patterns.

The way you corellate version name and version code is up to you. You can go with sequential version codes, or you can use a major*10000 + minor*100 + build formula - that's what Google does with their apps, so that v. 4.10.3 would have code 41003.

Unity has the answer in their Manual of Player Settings page: http://docs.unity3d.com/Manual/class-PlayerSettings.html

  • Bundle Version: Specifies the build version number of the bundle, which identifies an iteration (released or unreleased) of the bundle. The version is specified in the common format of a string containing numbers separated by dots (eg, 4.3.2). (This is shared between iOS and Android.)

  • Bundle Version Code: An internal version number. This number is used only to determine whether one version is more recent than another, with higher numbers indicating more recent versions. This is not the version number shown to users; that number is set by the versionName attribute. The value must be set as an integer, such as “100”. You can define it however you want, as long as each successive version has a higher number. For example, it could be a build number. Or you could translate a version number in “x.y” format to an integer by encoding the “x” and “y” separately in the lower and upper 16 bits. Or you could simply increase the number by one each time a new version is released.

This does not directly address the question but is related (and related to the answer by ArianJM).

I came to this question as a result of a problem I just had uploading a new version to the Amazon Appstore.

The content on the referenced Unity Manual page from ArianJM has changed and (at least for version 5.4) no longer contains any information about Bundle Version or Bundle Version Code.

In Unity 5.4:

Bundle Version is now Version. This field is identified by the Amazon Appstore as Version name.

Bundle Version Code is still Bundle Version Code. This field is identified by the Amazon Appstore as Version code. This field only allows numbers.

I am in the process of uploading a new version to the Amazon Appstore and although I updated the Version in Unity to 1.1, the Bundle Version Code was not updated and as a result was rejected by the Amazon Appstore because it was the same as the previous Bundle Version Code (Version code in Amazon Appstore).

I've since updated the Bundle Version Code in Unity - but could not update it to 1.1 or 1_1 because the field is strictly numeric - and so instead updated it to 2.

Which I believe brings us full circle to one part of the original question: Is there a right way to number the bundle versions?

Although arbitrarily changing it to 2 in my case is clearly not much of a scheme - it is both different and higher than the previous number and, as such, works.

It's not much of a plan but the lack of current documentation by Unity addressing these fields - and the similar-but-different field names between Unity and the Amazon Appstore seems to lead to these ad-hoc decisions.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!