最后,这就是我所做的:
我在我的版本控制系统中使用此格式的版本号创建了一个标签
X.YY.ZZ 其中它们都是整数,例如 1.20.00,并保留最后两位数以用于计划外的补丁版本,可能会在发布更高版本后在分支上发布......
因此,如果我先发布 1.20.00 再发布 1.23.00,我仍然可以返回并为 1.22.00 发布一个名为 1.22.01 的补丁。
我有一个构建步骤,它获取标签名称并为我在 UI 中使用的 Android 生成字符串资源“1.22.00”。它还将它生成为数字 12200,我将其用作版本号。
但是,我不尝试直接在清单中包含这个版本号,我通过为版本代码设置一个 ant 属性来为包设置它,如果定义了 ant 构建会拾取该属性并用于创建 .apk。
所以我得到的 Android Market 整数一直在增加,但旧版本的用户可以安装补丁版本,但如果你有更新的官方版本,则无法安装补丁版本。
即如果您有 1.20.00,则可以安装补丁 1.20.01,但如果用户已移至 1.23.00,则他们无法安装 1.20.01 补丁...
设置你可以使用的属性;
project.setProperty("version.name", versionName);
project.setProperty("version.code", versionCode);
如果设置了这些属性,那么 Android 构建系统(旧的和新的)将获取属性值并使用它,不需要做任何其他特殊的事情。
只需确保使用预构建/预编译 ant 扩展点之一进行设置。
在 custom_rules.xml 的新构建系统(Platform Tools >= 12)中我已经添加了
<project name="custom" default="help">
<import file="build_info.xml" />
<target name="-pre-build" depends="build-info" />
</project>
其中 build_info 是我自己的 ant 项目,它根据标签名称计算版本名称/编号(如果您在标签中构建......)。