Android Eclipse: настройка процесса сборки - PullRequest
1 голос
/ 05 октября 2011

В моем приложении много графических ресурсов, и я хотел бы поддерживать экран разных размеров с графическими ресурсами разного размера. Тем не менее, приложение будет очень большим, если я включу 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):

  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>
  1. после запуска одной из целей my-make-res-X должна быть создана новая папка ресурса
  2. Измените цели отладки, упаковки и компиляции и удалите все свойства, которые указывают на старую папку ресурсов, со свойством, указывающим на новую папку ресурсов (вы можете скопировать задачи и назвать их как-нибудь иначе
  3. Затем запустите измененную задачу отладки.

1 Ответ

2 голосов
/ 05 октября 2011

Я бы пошел с муравьем.Вот хороший учебник для вас: http://www.androidengineer.com/2010/06/using-ant-to-automate-building-android.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...