複数のお客様に配信する必要があるAndroidアプリケーションがあります。 カスタマーごとに、機能とURLを指定するさまざまなグラフィックスと設定XMLファイルがあります。複数のお客様向けのAndroidビルド設定
ビルド時に、アプリケーションをビルドする顧客を指定できる必要があります。次に、指定されたクライアントに適したリソース(画像や実行時の設定など)をアプリに組み込む必要があります。
プロジェクトはMavenでビルドされています。
アイデア?
複数のお客様に配信する必要があるAndroidアプリケーションがあります。 カスタマーごとに、機能とURLを指定するさまざまなグラフィックスと設定XMLファイルがあります。複数のお客様向けのAndroidビルド設定
ビルド時に、アプリケーションをビルドする顧客を指定できる必要があります。次に、指定されたクライアントに適したリソース(画像や実行時の設定など)をアプリに組み込む必要があります。
プロジェクトはMavenでビルドされています。
アイデア?
私は、アンドロイドメイヴンプラグインのmavenプロファイルと 'renameManifestPackage'と 'resourceOverlayDirectory'プロパティを使用してしまいました。
デフォルトの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>
これはAndroidプロジェクトではどれくらいうまくサポートされているのかわかりませんが、一般的な方法は各顧客のプロファイルを定義することです。各プロファイルで、関連するリソースディレクトリを指定した顧客のもので上書きする必要があります。
これは実際の 'res'フォルダにコピーされますか、それとも' target'フォルダにコピーされますか? –
同じデバイスに2つのアプリケーションをインストールしようとすると問題がありますか? –
@EugenMartynovいいえ、パッケージ名は異なります。 – peceps