2017-04-24 125 views
2

我有一个gradle文件内有多个依赖关系,我引入了一个新的构建变体调用“apple”。但我不想复制和粘贴如下。Gradle配置继承

dependencies { 
    debugCompile "com.android:libraryA:1.0.0"  
    debugCompile "com.android:libraryB:1.0.0"  
    debugCompile "com.android:libraryC:1.0.0"  

    appleCompile "com.android:libraryA:1.0.0"  
    appleCompile "com.android:libraryB:1.0.0"  
    appleCompile "com.android:libraryC:1.0.0"  
} 

有没有一种方法,我可以说appleCompile取决于debugCompile

+0

你是怎么定义'apple'的?如果你[使用'initWith()'](https://developer.android.com/studio/build/build-variants.html#build-types),可能会复制依赖关系,如果在定义之前定义了依赖关系构建类型(即,'dependencies {}'出现在'android {}'之前)。我没有尝试过,所以我不知道它是否有效。 – CommonsWare

+1

@CommonsWare我正在使用apple.initwith(调试),我也尝试过苹果{initWith调试}以及它只复制了构建变体配置,而不是依赖 –

回答

1

可以声明一个新的配置:

configurations { 
    [debugCompile, appleCompile].each { it.extendsFrom commonCompile } 
} 

现在commonCompile配置将被应用的依赖关系都debugapple配置,所以你不需要指定的两倍。

dependencies { 
    commonCompile "com.android:libraryA:1.0.0"  
    commonCompile "com.android:libraryB:1.0.0"  
    commonCompile "com.android:libraryC:1.0.0"  
}