2011-10-05 54 views
1

我的應用程序中有很多圖形資源,我想用不同尺寸的圖形資源支持不同的屏幕尺寸。但是,如果我在最終apk中包含3個不同版本的每個圖形資源(即res/drawable-hdpi,res/drawable-ldpi,res/drawable-mdpi),則該應用程序非常大。所以我希望能夠生成3個不同的apks用於測試 - 並最終部署 - 目的(請參閱using mulitple apks),每個都只包含相關的圖形資源。Android Eclipse:自定義構建過程

有沒有一種方法來定製android的生成過程(我使用的Eclipse),使這個可能嗎?如果在eclipse中不可能,可以從命令行中執行?

我的搜索表明很多人都在使用構建工具Ant和Maven來解決這類問題,並且android-sdk有一個工具來支持Ant out of the box。在回答

注: 執行下面的教程按照這些步驟之後(他們將教程後清晰閱讀螞蟻螞蟻手冊附帶了Android的SDK的main_rules.xml):

  1. main_rules的內容複製到你的build.xml(如在build.xml評論指定)
  2. 提出三點新的任務如下:
<property name="my.custom_res_folder" value="${basedir}/custom_res"/> 
    <property name="my.drawable_folder" value="${my.custom_res_folder}/drawable"/> 
    <property name="my.drawable_hdpi" value="${resource.absolute.dir}/drawable-hdpi"/> 
    <property name="my.drawable_mdpi" value="${resource.absolute.dir}/drawable-mdpi"/> 
    <property name="my.drawable_ldpi" value="${resource.absolute.dir}/drawable-ldpi"/> 
    <property name="my.drawable_default" value="${resource.absolute.dir}/drawable"/> 
<target name="my-make-custom-resource-directory"> 
    <echo message="my-make-custom-resource-directory"/> 
    <mkdir dir="${my.custom_res_folder}"/> 
    <mkdir dir="${my.drawable_folder}"/> 

    <copy todir="${my.custom_res_folder}/layout"> 
     <fileset dir="${resource.absolute.dir}/layout"/> 
    </copy>   

    <copy todir="${my.custom_res_folder}/menu"> 
     <fileset dir="${resource.absolute.dir}/menu"/> 
    </copy>   

    <copy todir="${my.custom_res_folder}/values"> 
     <fileset dir="${resource.absolute.dir}/values"/> 
    </copy>   

    </target> 


    <target name="my-make-res-small" depends="my-make-custom-resource-directory"> 
    <copy todir="${my.drawable_folder}" overwrite="false"> 
     <fileset dir="${my.drawable_ldpi}"/> 
    </copy> 
    <copy todir="${my.drawable_folder}" overwrite="false"> 
     <fileset dir="${my.drawable_mdpi}"/> 
    </copy> 
    <copy todir="${my.drawable_folder}" overwrite="false"> 
     <fileset dir="${my.drawable_hdpi}"/>   
    </copy> 
    <copy todir="${my.drawable_folder}" overwrite="false"> 
     <fileset dir="${my.drawable_default}"/>   
    </copy> 

    </target> 

    <target name="my-make-res-medium" depends="my-make-custom-resource-directory"> 
    <copy todir="${my.drawable_folder}" overwrite="false"> 
     <fileset dir="${my.drawable_mdpi}"/> 
    </copy> 
    <copy todir="${my.drawable_folder}" overwrite="false"> 
     <fileset dir="${my.drawable_hdpi}"/>   
    </copy> 
    <copy todir="${my.drawable_folder}" overwrite="false"> 
     <fileset dir="${my.drawable_ldpi}"/> 
    </copy> 
    <copy todir="${my.drawable_folder}" overwrite="false"> 
     <fileset dir="${my.drawable_default}"/>   
    </copy> 

    </target> 

    <target name="my-make-res-large" depends="my-make-custom-resource-directory"> 
    <copy todir="${my.drawable_folder}" overwrite="false"> 
     <fileset dir="${my.drawable_hdpi}"/> 
    </copy> 
    <copy todir="${my.drawable_folder}" overwrite="false"> 
     <fileset dir="${my.drawable_mdpi}"/>   
    </copy> 
    <copy todir="${my.drawable_folder}" overwrite="false"> 
     <fileset dir="${my.drawable_ldpi}"/> 
    </copy> 
    <copy todir="${my.drawable_folder}" overwrite="false"> 
     <fileset dir="${my.drawable_default}"/>   
    </copy> 

    </target> 
  • 運行的一個後我,使-RES-X針對新的資源文件夾應創建
  • 修改調試,包裝和編譯目標和刪除它指向舊的資源文件夾的屬性指向新的資源文件夾的所有屬性(您可能要複製的任務和使用別的名字
  • 然後運行修改後的調試任務。
  • 回答