【发布时间】:2017-05-26 04:06:17
【问题描述】:
编辑风格和路径:
目前我有:
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{} 对象。
sourceSet 的定义如下:
sourceSets {
flavor1{}
}
这可行,但我想添加一个特定于 productFlavor 的 sourceSet 和 buildType,如下所示:
sourceSet.debug.java.srcDirs = 'src/pathToJavaDebugFiles'
可以为每个产品风格和每个 buildType 定义,但是当我尝试动态添加它时这不起作用。
对我有用的是这个(感谢这个答案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 使用的,所以这不起作用。
【问题讨论】:
-
我仍然不清楚你想要什么......你说
I want to do add a sourceSet但代码 sn-p 是在现有的 sourceSet 上设置 java 源目录?此外,您还有一个来自 gradle 文件的申请;variants.gradle中有什么内容?那是你定义 ext {} 对象的地方吗?那么javaDirRelease是从哪里来的呢? -
我对答案进行了一些编辑,因此您对 variables.gradle 有更好的理解,该文件仅包含源目录的路径,仅此而已。 “添加到 sourceSet”是一种语义误解,我的意思是“设置一个 sourceSet”。 variables.gradle 包含 ext{} 对象 yes。
标签: android gradle android-gradle-plugin android-productflavors android-build-type