在我的Android应用中:
第399章
一切正常,但是当我尝试上传到Market时,出现此错误:
“文件无效:错误获取'android:versionCode'属性:属性不是整数值”
题:
对于Market,versionCode是否必须直接在 list 内部为“文字”整数,或者是否可以通过某种方式引用外部生成的整数,而不必始终(手动或自动)接触 list 。
谢谢
(顺便说一句:我刚刚意识到,该方案可能会导致我遇到补丁发行问题,因此我可能会产生更大的数字或其他内容,但仍希望获得此问题的答案)
最佳答案
最后,这是我所做的:
我在版本控制系统中使用此格式的numbe rof创建了一个标签
X.YY.ZZ,它们都是整数,如1.20.00,并保留最后两位数字以供计划外的补丁程序发布,可能在以后的版本发布后在分支上进行了....
因此,如果我先发布1.20.00,然后发布1.23.00,我仍然可以返回并发布到1.22.00的补丁程序,称为1.22.01。
我有一个生成步骤,该步骤获取标记名称并为UI中使用的Android生成字符串资源“1.22.00”。它还将其生成为数字12200,我将其用作版本号。
但是,我不会尝试直接在 list 中包含此版本号,而是通过为ant构建(如果已定义)并用来创建.apk的版本代码设置ant属性来为软件包设置它。
因此,对于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中的新构建系统(平台工具> = 12)中,我添加了
<project name="custom" default="help">
<import file="build_info.xml" />
<target name="-pre-build" depends="build-info" />
</project>
这里的build_info是我自己的ant项目,可以根据标签名称计算版本名称/版本号(如果您正在构建标签...。)。