Android Eclipse:自定义构建过程

时间:2011-10-05 09:31:40

标签: android eclipse build-process

我的应用程序中有很多图形资源,我希望使用不同大小的图形资源支持不同的屏幕尺寸。但是,如果我在最终的apk中包含每个图形资源的3个不同版本(即res / drawable-hdpi,res / drawable-ldpi,res / drawable-mdpi),则应用程序非常大。所以我希望能够生成3个不同的apks用于测试 - 并最终部署 - 目的(参见using mulitple apks),每个只包含相关的图形资源。

有没有办法自定义android构建过程(我正在使用eclipse)来实现这一点?如果在eclipse中不可能从命令行可以吗?

我的搜索表明很多人正在使用构建工具Ant和Maven来解决这类问题,并且android-sdk有一个支持Ant out of the box的工具。

答案说明: 执行下面的教程后,请按照以下步骤操作(在教程之后将会清楚,并阅读ant手册和android-sdk附带的main_rules.xml):

  1. 将main_rules的内容复制到build.xml中(如build.xml注释中所指定)
  2. 按如下方式完成三项新任务:
  3.   <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>
    
    1. 运行其中一个my-make-res-X目标后,应创建一个新的资源文件夹
    2. 修改调试,打包和编译目标,并删除指向旧资源文件夹的所有属性,其属性指向新资源文件夹(您可能希望复制任务并将其命名为其他
    3. 然后运行修改后的调试任务。

1 个答案:

答案 0 :(得分:2)