В моем приложении много графических ресурсов, и я хотел бы поддерживать экран разных размеров с графическими ресурсами разного размера. Тем не менее, приложение будет очень большим, если я включу 3 разных версии каждого графического ресурса в окончательный apk (т.е. res / drawable-hdpi, res / drawable-ldpi, res / drawable-mdpi). Поэтому я хотел бы иметь возможность создавать 3 разных apks для тестирования и, в конечном итоге, развертывания (см. с использованием нескольких apks ), каждый из которых содержит только соответствующие графические ресурсы.
Есть ли способ настроить процесс сборки Android (я использую Eclipse), чтобы сделать это возможным? Если это невозможно в затмении, возможно ли это из командной строки?
Мой поиск показывает, что многие люди используют инструменты сборки Ant и Maven для решения этого типа проблем, и что в Android-SDK есть инструмент для поддержки Ant из коробки .
Примечания к ответу:
После выполнения учебника, приведенного ниже, выполните следующие действия (они будут понятны после учебника и прочтения руководства по муравью и файла main_rules.xml, который поставляется с android-sdk):
- скопировать содержимое main_rules в ваш build.xml (как указано в комментариях build.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>
- после запуска одной из целей my-make-res-X должна быть создана новая папка ресурса
- Измените цели отладки, упаковки и компиляции и удалите все свойства, которые указывают на старую папку ресурсов, со свойством, указывающим на новую папку ресурсов (вы можете скопировать задачи и назвать их как-нибудь иначе
- Затем запустите измененную задачу отладки.