a) What does the Android bundle version and version code denote?
b) What is the difference between the bundle version and version code?
i) Suppose I have a bundle version of 0.137
, how does the version code relate to this? Can the version code just be 137?
ii) What happens when I release bundle version 1.0
next? Can I just call the version code 10
?
c) How do they relate? What's the right way to number the bundle versions?
N.B. There does not seem to be a source that explains the difference, in search. I have been very haphazardly numbering my bundles till now, but I'd like to figure out how to do this right.
These designations appear to be specific to Unity, but I am not sure if I understand what the parameters are about even from that page...
Unity has the answer in their Manual of Player Settings page: http://docs.unity3d.com/Manual/class-PlayerSettings.html
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.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:
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.