Условно включить ресурс в Android (Eclipse) на основе проекта

1

Я создаю приложение для Android в Eclipse и имею два похожих приложения, основанных на одной и той же базе кода, "London" и "UK". Чтобы создать каждое приложение, я просто переименовал основной пакет и изменил статический int в классе Application. Приложение использует значение этого int для отображения правильного пользовательского интерфейса, ограничения поведения пользователя и т.д.

У меня есть два файла значков, по одному для каждого приложения:

  • RES/вытяжка-ИПЧР /icon_london.png
  • RES/вытяжка-ИПЧР /icon_uk.png

Есть ли способ условно использовать правильный файл значков для приложения и видов деятельности в зависимости от какой-либо настройки конфигурации проекта? В противном случае техническое обслуживание проекта увеличивается, так как мне придется менять свой манифест каждый раз, когда изменяется база кода, например

<application
    android:icon="@drawable/icon_london"
    ...
    >

    <activity
        android:name="com.company.MainActivity" 
        android:logo="@drawable/icon_london"
        >
    </activity>

... и так далее, для всех видов деятельности.

Теги:
resources

1 ответ

1
Лучший ответ

У меня была аналогичная проблема, и я закончил создание сценария custon Ant для создания приложений. Вы можете запускать макросы или регулярные выражения для назначения одного ресурса или другого.

РЕДАКТИРОВАТЬ:

Сначала добавьте build.xml в проект:

Откройте командную строку и перейдите в каталог вашего проекта:

android update project --path

Затем вы можете переопределить существующий файл build.xml, например, следующим образом.

ПРИМЕЧАНИЕ. Этот скрипт Ant является всего лишь примером, я его не тестировал:

<?xml version="1.0" encoding="UTF-8"?>
<project name="Example" default="help">
    <property file="local.properties" />
    <property file="ant.properties" />

    <loadproperties srcFile="project.properties" />

    <!-- quick check on sdk.dir -->
    <fail
            message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through an env var"
            unless="sdk.dir"/>

    <!-- IMPORT ANT?S BUILD.XML -->
    <import file="${sdk.dir}/tools/ant/build.xml" />

    <property name="app.icon"       value="${icon}" />
    <property name="icon.file"      location="res/drawable/icon.png" />

    <target name="test-release">
      <antcall target="test-pre-release" />
      <antcall target="release" />
    </target>

    <target name="test-pre-release">
      <copy file="${app.icon}" tofile="${icon.file}" overwrite="true"/>
    </target>

</project>

Затем, чтобы создать этот проект с помощью специального значка, откройте командную строку и перейдите в каталог проекта:

CALL ant -f build.xml test-release -Dicon=path/to/your/icon.png

Как сказано, это очень простой пример. Чтобы создать хороший скрипт, вам придется немного изучить синтаксис Ant, но это не сложно.

  • 0
    Я никогда не использовал Ant раньше; Может ли он быть интегрирован в рабочий процесс Eclipse, или мне нужно будет использовать командную строку каждый раз, когда я хочу пересобрать и распространить?
  • 0
    Ant используется для сборки приложения. Вы можете проверить наличие существующих сценариев Ant в вашем местоположении SDK (например, ... \ android-sdk \ tools \ ant \ build.xml). И, чтобы создать свой собственный ... есть много учебных пособий, которые могут объяснить процесс. Например, enterra-inc.com/techzone/…
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню