使用maven为不同的客户构建多个.apk工件

时间:2012-06-04 17:20:05

标签: android maven continuous-integration apk

我必须为客户设置一个Android maven版本,以前基于ant。

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

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

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

这意味着我必须使用不同的资源从相同的源构建多个.apk工件。这样做的最佳方法是什么?

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

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

但我对此并不满意,所以我想到了使用多个模块。每个客户一个。但我的问题是,如何在不将源代码从主项目复制到所有模块的情况下从同一来源构建这些内容? 或者我是否必须为每个客户设置一个Android项目并将我的主项目称为apklib?这会合并共享资源和客户特定资源吗?

最好的做法是做这样的事吗?

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

1 个答案:

答案 0 :(得分:1)

对于只有很小的差异,仅使用资源过滤器使用配置文件和一些不同的属性就足够了。然而,配置文件在Maven世界中有点不好用,并且难以使用。

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

一般情况下,我建议提出或至少提一下这个问题on the mailing list