EDIT口味和路径:
目前我有:
sourceSets.whenObjectAdded {
sourceSet ->
def sourceData = rootProject.ext[sourceSet.name]
sourceSet.java.srcDirs = sourceData.javaDirRelease
}
rootProject.ext 是一个文件,其中所有 ProductFlavor 特定配置的定义如下:
ext{
flavor1 = [
javaDirRelease : ['src/pathToJavaReleaseFiles']
javaDirDebug : ['src/pathToJavaDebugFiles']
]
}
在主 build.gradle 中我也这样做:apply from: 'variants.gradle'
其中包含上面的 ext{} 对象。
sourceSets 定义如下:
sourceSets {
flavor1{}
}
这可行,但我想添加一个特定于 ProductFlavor 和 buildType 的源集,如下所示:
sourceSet.debug.java.srcDirs = 'src/pathToJavaDebugFiles'
可以为每个产品风格和每个构建类型定义它,但是当我尝试动态添加它时这不起作用。
对我有用的是这个(感谢这个答案如何指定每种风格的 buildType 源集? https://stackoverflow.com/questions/18119342/how-can-i-specify-per-flavor-buildtype-sourcesets):
sourceSets {
flavor1{
def flavorData = rootProject.ext['flavor1']
release {
java.srcDirs = flavorData.javaDirRelease
}
debug {
java.srcDirs = flavorData.javaDirDebug
}
}
}
不过,我真的希望动态添加它,这样我仍然可以完整地保留我的配置文件。我的构建配置非常复杂,并不像此处描述的那么简单,因此我不需要建议将源文件放入文件夹 src/flavor1Debug 中,因为此资源也从其他 ProductFlavors 中使用,因此这不起作用。