Android build.gradle 从另一个文件导入风味
Android build.gradle importing flavors from another file
我已将产品口味放入另一个名为 other.gradle
的文件中,它看起来像这样:
project.ext.myflavors = {
mock {
applicationId "com.mysite.mock"
}
}
并且我能够像这样成功访问我的 build.gradle
文件中的闭包:
myflavors()
但我收到一个错误消息,提示未定义模拟方法。
Error:Gradle DSL method not found: 'mock()'
有没有办法只从另一个文件定义代码并将代码本身导入构建文件?或者我如何从另一个文件导入口味?
多次访问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 可能不会注意到口味选择脚本或 gradle.properties
的更改,因此如果您对其进行更改,您可能需要手动重新导入 Gradle 文件查看正确的可用任务集。
构建风格可以在单独的文件 (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
}
我已将产品口味放入另一个名为 other.gradle
的文件中,它看起来像这样:
project.ext.myflavors = {
mock {
applicationId "com.mysite.mock"
}
}
并且我能够像这样成功访问我的 build.gradle
文件中的闭包:
myflavors()
但我收到一个错误消息,提示未定义模拟方法。
Error:Gradle DSL method not found: 'mock()'
有没有办法只从另一个文件定义代码并将代码本身导入构建文件?或者我如何从另一个文件导入口味?
多次访问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 可能不会注意到口味选择脚本或 gradle.properties
的更改,因此如果您对其进行更改,您可能需要手动重新导入 Gradle 文件查看正确的可用任务集。
构建风格可以在单独的文件 (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
}