2

运行时:

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

4

3 回答 3

2

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

但是,我只是想知道为什么这些文件会成为这样的错误负担?

于 2012-02-25T13:23:21.463 回答
1

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

指示如果删除文件失败,是否使用 File#deleteOnExit(),这会导致 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>
于 2015-03-27T13:27:17.707 回答
1

而另一种方法(xml)也很好。我只是想分享我们的方法。我们使用的是 Windows,我们有一个名为build.bat的批处理文件。在批处理文件完成调用ant build等命令后,我们在 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_文件

于 2015-05-26T10:46:49.620 回答