我的应用程序中有很多图形资源,我希望使用不同大小的图形资源支持不同的屏幕尺寸。但是,如果我在最终的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):
<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>
答案 0 :(得分:2)