如何在Eclipse中导出Android应用程序时自动增加versionCode?

时间:2013-05-07 19:20:08

标签: android eclipse version-control export version

当我点击导出(导出应用程序的新版本)时,我想自动增加Android应用程序清单文件的versionCode和versionName

我发现这里的第二个答案(Auto increment version code in Android app)非常有用(评论包括.exe程序自动增加Android versionCode),然而,他们让它在Build上运行,我希望它在我点击File时运行 - >导出,请看图像

enter image description here

2 个答案:

答案 0 :(得分:8)

您可以考虑修改文件 - >导出按钮以执行构建器以增加版本代码(如post you mentioned中所示)以及该按钮的常用功能。 org.eclipse.ui.menus extension point似乎是一个很好的起点。 (免责声明:我没试过这个。)

但是,在这里记住以下xkcd可能会很好:

XKCD: Is It Worth the Time?

答案 1 :(得分:4)

我已经完成了大量的自定义蚂蚁步骤。

首先,您需要将构建号提取到属性文件中。我们称之为version.properties

然后,增加版本代码的步骤是:

<target name="increment-version-code">
    <propertyfile file="version.properties">
        <entry key="versionCode" type="int" default="0" operation="+" value="1" />
    </propertyfile>
</target>

这将读取条目versionCode,将其递增并将其保存回version.properties。

到目前为止,这么好。最后一步是将versionCode放入AndroidManifest.xml文件中,不幸的是现在它变得混乱了。

我解决它的方法是使用ant中的filtering functionality从每个构建的模板重新生成清单。

<target name="generate-manifest">
    <filter filtersfile="version.properties"/>
    <copy todir="${source.dir}" overwrite="true" verbose="true" filtering="true">
        <fileset dir="${source.dir}" casesensitive="false">   
            <include name="**/*.base"/>
        </fileset>
        <mapper type="glob" from="*.base" to="*" />
    </copy>
</target>

然后,您要做的就是将AndroidManifest.xml移至AndroidManifest.xml.base并将versionCode属性替换为android:versionCode="@versionCode@"。然后,您可以运行increment-version-code目标来触发version.propertiesgenerate-manifest目标中的versionCode,以将.base模板转换为最终清单。

然后可以将这些作为构建步骤轻松添加到Eclipse项目中,或者作为导出的ant构建的依赖项添加。不幸的是,导出功能并没有简单的钩子(不过,有“After Clean”,我觉得这很好)。

当然,随着Gradle即将到来,所有这些都必须尽快重写。 :(