2012-02-25 95 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_文件