0

我必须为客户设置一个 android maven 构建,它以前是基于 ant 的。

基本应用程序是一个白标实现,该应用程序分发给多个第三方客户。这些客户版本中的每一个都使用相同的源代码和一组共享资源。但是每个客户也有一些特定于他们公司的资源(常量、资产等)。

我的 android 项目的结构如下所示。我只包括了相关的文件/文件夹,结构仍然来自 ant 构建:

App
|--src
|--res
|--res-customer1
|--res-customer2
|--pom.xml

这意味着我必须从具有不同资源的同一源构建多个 .apk 工件。做到这一点的最佳方法是什么?

我尝试的第一件事是在我的主要项目 pom 中为每个客户使用不同的配置文件。然后我编写了一个 shell 脚本来执行所有 maven 构建(每个客户 1 个)。

然后我想出在我的主项目中只使用一个发布配置文件,并通过命令行传递客户特定的属性。属性通过 shell 脚本传递,类似于我的第一种方法。

但我对此并不满意,所以我考虑使用多个模块。每位客户一份。但我的问题是,如何在不将主项目中的源代码复制到所有模块的情况下从同一源代码构建它们?还是我必须为每个客户设置一个 android 项目并将我的主要项目称为 apklib?这会合并共享资源和客户特定资源吗?

有没有做这样的事情的最佳实践?

任何其他方法也非常受欢迎。

4

1 回答 1

1

对于很小的差异,仅使用配置文件和一些不同的属性与资源过滤器就足够了。然而,配置文件在 Maven 世界中是一种糟糕的模式,并且很难使用。

您为每个客户使用单独的模块并让基础应用程序成为 apklib 的预感是正确的。我知道有几个人在 maven android 开发人员列表上报告过,这是他们使用并为他们工作的东西。我个人也会在你的情况下使用这种方法。

一般来说,我建议在邮件列表中询问或至少提及这个问题。

于 2012-06-04T18:04:07.360 回答