如何在构buildAndroid apk与ant时在文件名中包含版本string?

通常我们用命令在debugging模式下构buildandroid

ant debug 

并获得了apk文件名AppName-debug.apk

有没有什么办法可以直接生成AppName-debug-<version-number>.apk格式的apk文件,而不需要'mv'命令?

谢谢。

Solutions Collecting From Web of "如何在构buildAndroid apk与ant时在文件名中包含版本string?"

我通过使用Android清单中的信息以自动的方式完成了这个工作。

我的方法是修改本地项目ant build.xml文件以导入master build.xml文件的自定义副本,在最新版本的SDK中导入到本地文件的主文件位于<SDK>/tools/ant/build.xml (以前的版本是android_rules.xml)注意项目本地默认的build.xml文件中的import行。

由Android工具创build的本地build.xml的注释包含有关如何进行自定义的详细信息,以便将来对这些工具的更新不会中断您的更改。

在自定义规则文件中添加:

 <xmlproperty file="AndroidManifest.xml" prefix="mymanifest" collapseAttributes="true"/> 

这将清单作为一组ant属性读入,并使用自定义前缀来确保没有名称冲突。

然后,您可以将$ {mymanifest.manifest.android:versionName}添加到apk名称所定义的任何位置,只需在自定义规则文件中search.apk

我已经使用这个过程来自动构build服务器的版本文件。

有了一些额外的调整,也可以让你的发布应用程序自动签名,购买设置密码的属性和使用这些签名任务。 存储在仅存在于构build服务器上的单独属性文件中的实际密码。 虽然安全风险较小,但在某些情况下,由于需要全面端到端的构build自动化而受到影响。

另一种类似Android的解决scheme是使用XPATH任务,就像在$ {sdk.dir} /tools/ant/build.xml中所做的那样:

 <xpath input="AndroidManifest.xml" expression="/manifest/@android:versionName" output="versionName" default="unknown"/> <echo message="name: ${versionName}"></echo> 

这需要定义任务:

 <path id="android.antlibs"> <pathelement path="${sdk.dir}/tools/lib/anttasks.jar" /> </path> <taskdef name="xpath" classname="com.android.ant.XPathTask" classpathref="android.antlibs" /> 

我不知道哪个是最低的SDK版本,但是它适用于SDK14。

问候,迈克尔

以下文章中描述的解决scheme具有custom_rules.xml文件,可以将其复制以实现所需的结果。 http://jeffreysambells.com/2013/02/14/build-your-android-apk-with-the-manifest-version-number

是的,有一种方法来生成任何名称的apk文件,我给你一个过程,你休闲这个过程中,你有.apk提到你的名字。

1-在包资源pipe理器中右键单击应用程序。 2 – select出口。 3selectAndroid 4 – select导出Android应用程序。 5 – 创build新的密钥库。 6-填写表格。 7-:给你的 apk文件名称你想要的 8-:给位置apk安装apk。

然后你find你的问题的解决scheme。 我希望这是帮助。