【发布时间】:2019-10-22 13:25:29
【问题描述】:
我正在开发一个 android 应用程序,用于为共享相同数据源的两个不同 Build Variant 获取两个不同的 Rest API。我正在将产品风味用于构建变体。但我不知道如何配置 Retrofit 部分,以便为不同的构建变体选择不同的 API。
提前致谢
【问题讨论】:
标签: java android retrofit retrofit2 build-variant
我正在开发一个 android 应用程序,用于为共享相同数据源的两个不同 Build Variant 获取两个不同的 Rest API。我正在将产品风味用于构建变体。但我不知道如何配置 Retrofit 部分,以便为不同的构建变体选择不同的 API。
提前致谢
【问题讨论】:
标签: java android retrofit retrofit2 build-variant
您可以创建一个BuildConfig Field 以根据您的产品风格向您的 API 客户端提供不同的REST API URL:
打开您的 build.gradle (应用级别) 文件并将以下行添加到您的 android 块:
android {
....
applicationVariants.all { variant ->
def variantName = variant.flavorName
// replace your specific flavor here instead of 'flavor1' & 'flavor2'
if (variantName.contains("flavor1")) {
variant.buildConfigField 'String', "SERVER_URL", '"your_flavor_specific_url_here"'
} else if (name.contains("flavor2")) {
variant.buildConfigField 'String', "SERVER_URL", '"your_flavor_specific_url_here"'
}
}
....
}
现在重建您的项目,然后您可以在您的项目中访问 BuidConfig.SERVER_URL,这将根据您选择的产品风格而有所不同。
【讨论】:
对于调试版本,您可以使用
// setting up retrofit
.baseUrl(if (BuildConfig.DEBUG) {
"https://debug.server"
} else {
"https://release.server"
})
口味,你可以试试
// setting up retrofit
.baseUrl(if (BuildConfig.FLAVOR == "test") {
"https://debug.server"
} else if(BuildConfig.FLAVOR == "staging"){
"https://staging.server"
} else {
"https://release.server"
})
【讨论】: