Конфигурации сборки Android для нескольких клиентов - PullRequest
12 голосов
/ 26 сентября 2011

У меня есть Android-приложение, которое нужно доставить нескольким клиентам. Для каждого клиента у меня есть различные графические и конфигурационные XML-файлы, в которых указаны функции и URL-адреса.

Во время сборки мы должны иметь возможность указать клиента, для которого должно быть создано приложение. Затем в приложение должны быть встроены ресурсы (например, изображения и конфигурация времени выполнения), подходящие для указанного клиента.

Проект построен с Maven.

Есть идеи?

Ответы [ 2 ]

14 голосов
/ 27 сентября 2011

В итоге я использовал профили maven и свойства 'renameManifestPackage' и 'resourceOverlayDirectory' плагина для Android maven.

По умолчанию res / dir переопределяется 'resourceOverlayDirectory', специфичным для каждого клиента.

Отлично сработало.

<!-- profile for zurich -->
<profile>
  <id>zurich</id>
  <properties>
    <customer>zurich</customer>
    <customerPackage>zurich.com</customerPackage>
    <customerResources>customers/${customer}/res</customerResources>
    <customerApkName>${customer}-${project.artifactId}</customerApkName>
  </properties>
</profile>

и в сборке у меня есть:

<build>
  <sourceDirectory>src</sourceDirectory>

  <!-- the name of the generated apk and jar -->
  <finalName>${customerApkName}-${project.version}</finalName>

  <pluginManagement>

    <plugins>

  <!-- customer specific manifest and package -->
  <plugin>
    <groupId>com.jayway.maven.plugins.android.generation2</groupId>
    <artifactId>maven-android-plugin</artifactId>
    <configuration>
      <renameManifestPackage>${customerPackage}</renameManifestPackage>
      <resourceOverlayDirectory>${customerResources}</resourceOverlayDirectory>
    </configuration>
  </plugin>

    </plugins>

  </pluginManagement>
2 голосов
/ 26 сентября 2011

Не знаю, насколько хорошо это поддерживается для проектов Android, но обычным способом является определение профиля для каждого клиента. В каждом профиле вы должны переопределить соответствующие каталоги ресурсов с каталогами для указанного клиента.

...