我有2个构建类型(debug、release)和2个产品风味(product1、product2)。我想为每个构建类型和产品风味定义一个buildConfigField。该buildConfigField是应用从服务器下载数据的URL,对于每个产品风味和构建类型都会发生变化。
现在,我的情况如下:
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都有不同的模式,所以我不能将它们分组。一种可能的解决方案是在不同的构建类型中添加2个版本的url base,并在flavor中选择正确的版本。
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”,解决方案在此页面中。
project.hasProperty
来避免不存在的额外属性了,谢谢。 - david