android - 如何在 Retrofit for Android 中外部化基本 URL

标签 android retrofit

我们现在有一个 Android 应用程序,可以使用 Retrofit 正常运行。我们正在尝试自动化测试和生产发布的构建,以减少人为错误的可能性(即开发人员在为生产构建时忘记将基本 URL 指向生产等)

我注意到 Retrofit 的基本 URL 是在类文件中定义的。有什么方法可以用来将其配置在属性文件或 xml 中,以便我们可以使用 Gradle 脚本选择要包含在构建中的正确文件?

谢谢

最佳答案

您可以在 buildTypes 中定义一个常量:

buildTypes {
    debug {
        buildConfigField "String", "API_URL", "\"https://url/pre/\""
    }
    release {
        buildConfigField "String", "API_URL", "\"https://url/pro/\""
    }
}

然后在改造构建器中使用它:

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl(BuildConfig.API_URL)
    .build();

请注意,如果您有不同的模块,BuildConfig 将在每个模块中定义。对于这种情况,我在应用程序模块中定义了 buildTypes,并将 BuildConfig.API_URL 作为参数传递给带有改造构建器的模块调用。

关于android - 如何在 Retrofit for Android 中外部化基本 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55518814/

相关文章:

android - 在 android 5.0.2 上不会调用自定义 View 构造函数

java - 没有错误,但应用程序打不开

android - Google Play 游戏服务——解锁的成就是否会通过 g+ 自动分享?

android - 无法使用 MockServerResponse 读取 Json 文件

java - 如何使用 Retrofit 2 在同一个键上发布多个值?

android - 启用 ProGuard 时改造 2 不发送数据

java - 如何在对象列表中搜索对象的属性包含字符串

android - Android 上的 OpenId

java - 为具有不同对象的嵌套 json 改造 gson 转换器

java - 改造 2.0 + GSON + Android : Unable to invoke no-args constructor for interface retrofit2. http.Body