【问题标题】:Android Eclipse: Customizing the build processAndroid Eclipse:自定义构建过程
【发布时间】:2017-06-17 23:56:01
【问题描述】:

我的应用程序中有许多图形资源,我想用不同大小的图形资源支持不同的屏幕尺寸。但是,如果我在最终的 apk 中包含每个图形资源的 3 个不同版本(即 res/drawable-hdpi、res/drawable-ldpi、res/drawable-mdpi),则该应用程序非常大。因此,我希望能够生成 3 个不同的 apk 用于测试——并最终用于部署——目的(参见 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 cmets 中指定)
  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>
  1. 运行 my-make-res-X 目标之一后,应创建一个新的资源文件夹
  2. 修改调试、打包和编译目标,并删除所有指向旧资源文件夹的属性以及指向新资源文件夹的属性(您可能希望复制任务并将它们命名为其他名称
  3. 然后运行修改后的调试任务。

【问题讨论】:

    标签: android eclipse build-process


    【解决方案1】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多