通常我们使用命令
在调试模式下构建android包ant debug
并获取apk文件 AppName-debug.apk 。
有没有办法在没有'mv'命令的情况下直接以 AppName-debug-<version-number>.apk
的格式生成apk文件?
感谢。
答案 0 :(得分:38)
我是通过使用Android清单中的信息以自动方式完成的。
我的方法是修改本地项目ant build.xml
文件以导入主build.xml
文件的自定义副本,在最新版本的SDK中导入到本地文件的主文件位于<SDK>/tools/ant/build.xml
(以前版本中的android_rules.xml)请注意项目本地默认import
文件中的build.xml
行。
Android工具创建的本地build.xml
中的评论包含有关如何进行自定义的详细信息,以便将来对工具的更新不会破坏您的更改。
在自定义规则文件中添加:
<xmlproperty file="AndroidManifest.xml" prefix="mymanifest" collapseAttributes="true"/>
这将清单读入一组ant属性,并带有自定义前缀以确保没有名称冲突。
然后,您可以将 $ {mymanifest.manifest.android:versionName} 添加到定义了apk名称的任何位置,只需在自定义规则文件中搜索.apk
即可。
我已经使用此过程从构建服务器自动化版本化文件。
通过一些额外的调整,还可以自动签署您的发布应用程序,购买设置属性中的密码并使用签名任务中的密码。存储在仅存在于构建服务器上的单独属性文件中的实际密码。虽然存在轻微的安全风险,但在某些情况下,由于需要完整的端到端构建自动化而无法承担安全风险。
答案 1 :(得分:9)
另一个更像Android的解决方案是在$ {sdk.dir} /tools/ant/build.xml中使用XPATH任务:
<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。
此致 迈克尔
答案 2 :(得分:2)
以下帖子中描述的解决方案包含custom_rules.xml文件,可以将其复制以实现所需的结果。 http://jeffreysambells.com/2013/02/14/build-your-android-apk-with-the-manifest-version-number
答案 3 :(得分:-4)
是的,有一种生成带有任何名称的apk文件的方法我给你一个过程,你可以通过这个过程.apk提到你的名字。
1 - 右键单击包浏览器中的应用程序。 2选择出口。 3选择了Android 4 - 选择导出Android应用程序。 5 - 创建新的密钥库。 6-填写表格。 7-:给apk文件名你想要什么 8-:给apk的位置存储apk。
然后你找到问题的解决方案。 我希望这是有帮助的。