2012-02-25 58 views
2

在运行时删除生成的文件:与我的Android项目如何运行时,“蚂蚁发布”

ant release 

,我得到一吨的自动生成的文件。例如:

MyApp-release-unaligned.apk 
MyApp-release-unsigned.apk 
MyApp-release-unsigned.apk.d  
MyApp-release.apk  
MyApp.ap_   
MyApp.ap_.d 
build.prop 
classes 
classes.dex 
classes.dex.d 
res 

我不想要所有这些文件。基本上我需要的是签名的.apk。所以我尝试过:

<target name="-post-compile"> 
    <!-- Clean up files that we don't want --> 
    <delete dir="{$out.dir}res"/> 
    <delete dir="{$out.dir}classes"/> 
    <delete file="{$out.dir}${app.name}-release-unaligned.apk"/> 
    <delete file="{$out.dir}${app.name}-release-unsigned.apk"/> 
    <delete file="{$out.dir}${app.name}-release-unsigned.apk.d"/> 
    <delete file="{$out.dir}${app.name}.ap_"/> 
    <delete file="{$out.dir}${app.name}.ap_d"/> 
    <delete file="{$out.dir}build.prop"/> 
    <delete file="{$out.dir}classes.dex"/> 
    <delete file="{$out.dir}classes.dex.d"/> 
</target> 

很明显这些文件是在调用-post-compile之后生成的。有没有简单的方法来调整build.xml以移除除签名的apk之外的所有内容?我的输出目录被定向到一个服务器,我想让事情变得简单,以便其他人不要拖动错误的文件。如果没有简单的方法删除这些文件,我会构建一个服务器端脚本来完成它,但如果可能的话,我宁愿将所有内容都保存在build.xml中。谢谢!

回答

2

您可以将删除文件的目标添加为release命令的最后一行,但是,我假定您不像大多数Android开发人员那样创建自己的发布目标。然后,另一种选择是将您的目标公开为<target name="remove-files">,然后运行像ant release,remove-files这样的蚂蚁版本。

但是,我只是想知道为什么这些文件有这样的bug负担?

+0

完美工作。谢谢。这不是空间问题,我只是不希望别人被服务器上的其他文件弄糊涂了。另外,您必须在文件末尾的导入之前添加目标。该命令是没有逗号的'ant release remove-files'。 – Rymnel 2012-02-25 13:44:46

1

也许有点晚了,但比接受的答案更容易解决(不确定在问题提出时它是否有效)。 有deleteonexit属性为delete任务,其中:

指示是使用文件#deleteOnExit()如果有故障0​​删除一个文件,这将导致JVM中试图删除文件时 JVM进程正在终止。由于蚂蚁1.6.2

所以,在custom_rules.xml它可能有这样的事情:

<target name="release" depends="clean, clean-out-release"> 
    <echo message="${basedir}"/> 

    ... 

    <!-- remove extra files from out project --> 
    <delete deleteonexit="true"> 
     ... 
     <!-- remove -unassigned, -unaligned files --> 
     <fileset dir="./out" includes="*-unaligned.apk" /> 
     <fileset dir="./out" includes="*-unsigned.apk" /> 
    </delete> 
</target> 
1

而其他方法(XML)是也没关系。我只是想分享我们的方法。 我们使用Windows,我们有一个批处理文件,称为build.bat。 批处理文件已完成了蚂蚁建筑等 调用命令后,我们可以在我们的运行build.bat

SET "APK_TMP3=%DIR_APP%\platforms\android\ant-build\%APP_PACKAGEID%.classes.dex" 
IF EXIST "%APK_TMP3%" (
    del "%APK_TMP3%" 
) 

我们删除的文件是* -unaligned.apk的最后几行,unsigned.apk ,classes.dex,.ap_文件