我已将产品Flavors放入另一个名为other.gradle
的文件中,它看起来像这样:
project.ext.myflavors = {
mock {
applicationId "com.mysite.mock"
}
}
我能够成功访问我的build.gradle
文件中的闭包:
myflavors()
但是我得到一个错误,模拟方法没有定义。
Error:Gradle DSL method not found: 'mock()'
有没有办法只从另一个文件定义代码并将代码本身导入构建文件?或者我如何从其他文件导入风味?
答案 0 :(得分:4)
构建版本可以在单独的文件(build_flavors.gradle
)中定义,如下所示:
android {
productFlavors {
flavorA {
// ...
}
flavorB {
// ...
}
}
}
然后导入build.gradle
:
apply plugin: 'com.android.application'
apply from: './build_flavors.gradle'
android {
// the rest of your android configuration
}
答案 1 :(得分:3)
多次访问productFlavors
非常好。因此,在构建脚本包含的脚本中添加部分或全部版本将起作用。
创建一个Gradle脚本,其中包含决定应添加哪种口味的逻辑:
if (someCondition()) {
android {
productFlavors {
one {
applicationId = 'com.example.oneapp'
}
}
}
} else {
android {
productFlavors {
two {
applicationId = 'com.example.twoapp'
}
}
}
}
现在从构建脚本中包含此脚本。如果将它放在根项目的(子文件夹)下,则可以轻松地重用脚本。例如:
apply from: rootProject.file('build-scripts/flavor-picker.gradle')
请注意,您的IDE可能不会注意到对flavor选择脚本或gradle.properties
的更改,因此如果您对它们进行更改,则可能需要手动重新导入Gradle文件以查看正确的可用任务集。 / p>