在运行时动态添加gradle项目

时间:2013-10-25 05:26:46

标签: gradle android-gradle

我正在更新Android的构建过程以使用gradle。我们有特定于客户端的应用程序 - 即单个代码模板,用作动态创建的所有应用程序的基础。

要构建应用程序,我会循环访问CSV文件以获取每个应用程序的详细信息。然后,在编译应用程序之前,我会获取源模板的副本,插入客户端的名称,图像等。这在当前系统中工作正常。在gradle版本中,我已成功循环遍历行并为每个行创建具有正确详细信息的应用程序源。但是,当我尝试实际构建应用程序时,它失败并显示消息:

Project with path ':xxxxxx' could not be found in root project 'android-gradle'.

通过阅读文档,我理解这是因为项目在配置阶段不存在,因为它在执行阶段之前不会创建。然而,我无法找到的是解决这个问题的方法。有没有人设法实现类似的东西?或者也许建议采用更好的方法?

2 个答案:

答案 0 :(得分:4)

一个选项是脚本settings.gradle。与任何其他Gradle脚本一样,您可以使用Groovy的全部功能。稍后,您将无法再更改构建由哪些项目组成。请注意,将为Gradle的每次调用评估settings.gradle,因此评估需要很快。

答案 1 :(得分:0)

虽然彼得的回答指出了我正确的方向,但它最终并不是一个可行的解决方案。不幸的是,要构建近200个应用程序,为每个应用程序创建源代码副本的开销太大,并且gradle内存不足。

我所做的是使用Android插件的product flavors功能。非常简单地为CSV中的每一行动态添加productFlavor(我可以在build.gradle而不是settings.gradle中执行此操作),我只需设置srcDir指向每个人的相关图像等。