【发布时间】:2016-10-08 18:04:32
【问题描述】:
我有 2 个 buildTypes(调试、发布)和 2 个 productFlavors(product1、product2)。我想为每个 buildType 和 productFlavors 定义一个 buildConfigField。 buildConfigField 是应用程序从服务器下载数据的 url,它会根据 productFlavor 和 buildTypes 变化。
现在,我有:
buildTypes {
debug {
debuggable true
}
release {
debuggable false
}
}
productFlavors {
product1 {
buildConfigField STRING, "URL_BASE", '"https://api1.release.com"'
}
product2 {
buildConfigField STRING, "URL_BASE", '"https://api2.release.com"'
}
}
但我想要这样的东西:
buildTypes {
debug {
debuggable true
}
release {
debuggable false
}
}
productFlavors {
product1 {
debug {
buildConfigField STRING, "URL_BASE", '"https://api1.debug.com"'
}
release {
buildConfigField STRING, "URL_BASE", '"https://api1.release.com"'
}
product2 {
debug {
buildConfigField STRING, "URL_BASE", '"https://api2.debug.com"'
}
release {
buildConfigField STRING, "URL_BASE", '"https://api2.release.com"'
}
}
}
我怎样才能做到这一点?
更新:
每个 URL_BASE 都有不同的模式,因此我无法对 URL 进行分组。一种可行的解决方案是在不同的构建类型中添加 2 种风味的 url 基础,并在风味中选择正确的一种。
buildTypes {
debug {
debuggable true
buildConfigField STRING, API_VARIANT_PRODUCT1, '"api1.deb.com"'
buildConfigField STRING, API_VARIANT_PRODUCT2, '"api2.debug.com"'
}
release {
debuggable false
buildConfigField STRING, API_VARIANT_PRODUCT1, '"api1.release.com"'
buildConfigField STRING, API_VARIANT_PRODUCT2, '"api2.release.com"'
}
}
productFlavors {
product1 {
buildConfigField STRING, URL_BASE, '"https://" + API_VARIANT_PRODUCT1 + "/v1"'
}
product2 {
buildConfigField STRING, URL_BASE, '"https://" + API_VARIANT_PRODUCT2 + "/v1"'
}
}
}
更新 2
如果您需要在 gradle 中添加资源,例如“KEY_MAP”,解决方案在 page 中。
【问题讨论】:
标签: android gradle android-gradle-plugin build.gradle