2013-04-25 24 views
4

我想用Gradle构建一个Android项目。android - gradle多项目包含和排除库

它具有以下结构:

ProjectA----- MainProject, 
LibA  ---- Library project, 
LibB  ---- Library project, 
LibC  ---- Library project, 
LibD  ---- Library project, 
etc... 

基于situtation,我需要包括库,有时需要包括所有库,库1,2或3等基于口味。 在设置文件中我包含了所有的项目。

有人知道如何根据口味包含/排除库吗?

我试过依赖块,那里我得到错误。
下面是示例代码

dependencies { 
if (task.name.matches('compileFlovor1'){ 
    exclude module: 'LibD' 
    } 
} 

错误是:找不到方法排除()为参数[{模块= LIBD}]。

请指引我解决这个问题

回答

6

做添加您必须配置根据配置的味道具体的依赖。 假设你有味道的“自由”和“祈祷,”

android { 
    productFlavors { 
     free 
     paid 
    } 
} 

,那么你可以通过以下方式设置风味特殊的依赖关系的依赖块:

dependencies { 
    compile project(':library1') //library1 used in free and paid flavour 
    freeCompile project(':library2') 
    paidCompile project(':library3')  
    paidCompile project(':library4')  
    paidCompile project(':library5')  
} 

希望帮助,

欢呼声, René

+0

谢谢Rene Grieschke ...它对我有用。非常感谢你..也可以排除吗? – user2318724 2013-04-26 15:37:06

+0

我们以自定义的方式处理依赖项,并且不提供排除依赖项的方法。我不确定这将如何工作。唯一的方法是除去顶层依赖(及其所有传递dep),因为任何其他可能会破坏构建。也可能只是在需要它的风味中声明它。 – 2013-04-27 17:41:59

+0

继续回答上述问题,库是如何作为ProjectA主项目的apk文件的一部分包含在内的。在ProjectA/build/class/flavor /中,只包含库项目类文件,这些文件在ProjectA编译时需要,并且只有该库可以工作。我的东西是即插即用库。意思是一个库可以提供一个服务,并且不会在ProjectA中使用任何位置或导入,只包含在ProjectA的清单文件中。在这种情况下,如何包含这些库。对于例如:在eclipse中,它将捆绑在一起,但在我的情况下不会发生同样的情况......在此先感谢 – user2318724 2013-04-30 10:02:50