2011-10-05 61 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针对新的资源文件夹应创建
  • 修改调试,包装和编译目标和删除它指向旧的资源文件夹的属性指向新的资源文件夹的所有属性(您可能要复制的任务和使用别的名字
  • 然后运行修改后的调试任务。
  • 回答