我有一个包含多种产品变体的项目。 目前我使用以下方式指定是否要包含特定功能 - 在build.gradle文件的末尾我执行此操作:
productFlavors
{
customapp1 {
applicationId "com.app.id1"
},
customapp2 {
applicationId "com.app.id2"
},
....
}
if(extensions_ads) {
dependencies {
println "Adding ads dependencies"
compile 'com.google.android.gms:play-services-ads:8.3.0'
}
android.sourceSets.main {
java.srcDirs += ['./src/extensions/ads'];
}
}
else{
android.sourceSets.main {
java.srcDirs += ['./src/extensions/noads'];
}
}
如您所见extensions_ads是一个全局变量,我希望有类似的东西:
productFlavors
{
customapp1 {
extensions_ads true
applicationId "com.app.id1"
},
customapp1 {
extensions_ads false
applicationId "com.app.id1"
}
}
答案 0 :(得分:0)
我会遵循另一个逻辑来规范您的依赖项或源集资源。
您只能为flavor,buildType或buildVariant添加依赖项。
例如:
dependencies {
flavor1Compile 'com.google.android.gms:play-services-ads:8.3.0'
}
同样,您可以为每种风格使用不同的文件夹,而无需在android.sourceSets
文件中指定build.gradle
。
+ src
+ main
+ java
+ res
+ flavor1
+ java
+ res
+ flavor2
+ java
+ res
当然,如果还不够,你可以指定android.sourceSets作为风味,如:
sourceSets{
main {
//
}
flavor1.java.srcDirs = [ ...]
flavor1.res.srcDirs = [ ... ]
...
flavor2.java.srcDirs = [...]
flavor2.res.srcDirs = [...]
...
}