在我的Android应用中:

  • 使用脚本作为构建的一部分来生成递增的内部版本号(整数)(使用SVN修订版中的Integer)
  • 我生成一个Android资源文件,并将其定义为整数:
    第399章
  • 我使用
  • 上面生成的资源在UI上进行了显示
  • 我在 list 中为versionCode元素引用了整数

  • 一切正常,但是当我尝试上传到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项目,可以根据标签名称计算版本名称/版本号(如果您正在构建标签...。)。

    10-07 19:25
    查看更多