如何在运行"ant release"时删除生成的文件



运行时:

ant release  

在我的Android项目中,我得到了大量自动生成的文件。例如:

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中。谢谢

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

然而,我只是想知道为什么这些文件是一个bug负担?

也许有点晚了,但有比公认答案更容易的解决方案(不确定在提出问题时是否有效)。删除任务有deleteonexit属性:

指示如果失败,是否使用文件#deleteOnExit()删除文件,这会导致jvm在jvm进程正在终止。自Ant 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>

而另一种方法(xml)也可以。我只是想分享我们的方法。我们使用的是Windows,我们有一个名为build.bat的批处理文件。批处理文件完成调用ant building等命令后我们在大楼的最后一行有这个。bat

SET "APK_TMP3=%DIR_APP%platformsandroidant-build%APP_PACKAGEID%.classes.dex"
IF EXIST "%APK_TMP3%" (
    del "%APK_TMP3%"
)

我们删除的文件是*-unaligned.apk、unsigned.apk、classes.dex、.ap_files

相关内容

  • 没有找到相关文章

最新更新