如何为Retrofit配置调试和发布日志级别?

3

我在我的Android项目中使用Retrofit。在开发过程中,我启用了RestAdapter的完整日志输出,方法如下:

new RestAdapter.Builder()
    .setLogLevel(RestAdapter.LogLevel.FULL);

当我发布一个版本时,日志级别被设置为RestAdapter.LogLevel.NONE,原因显而易见。

我希望根据构建/文件夹架构自动切换此设置:

.
├── app
│   └── src
│       ├── debug
│       ├── main
│       └── release

我该如何将RestAdapter.LogLevel.FULL移动到app/src/debug,并将RestAdapter.LogLevel.NONE移动到app/src/release
2个回答

12

更好的方法是通过build.gradle文件来实现:

buildTypes {
    debug {
        buildConfigField 'retrofit.RestAdapter.LogLevel', 'RETROFIT_LOG_LEVEL', 'retrofit.RestAdapter.LogLevel.FULL'
    }

    release {
        buildConfigField 'retrofit.RestAdapter.LogLevel', 'RETROFIT_LOG_LEVEL', 'retrofit.RestAdapter.LogLevel.NONE'
    }
}

然后在代码中做这个:

mRestAdapter = new RestAdapter.Builder()
    .setEndpoint("http://something.com")
    .setLogLevel(BuildConfig.RETROFIT_LOG_LEVEL)
    .build();

这样在运行时就不需要检查,只需要在编译时进行检查。


5

最简单的方法是使用 BuildConfig.DEBUG 标志,它会自动设置为 true(用于调试版本)和 false(用于发布版本)。

我是这样做的:

RestAdapter adapter = new RestAdapter.Builder()
    .setLogLevel(BuildConfig.DEBUG ? RestAdapter.LogLevel.FULL : RestAdapter.LogLevel.NONE)

谢谢。我唯一不喜欢的是“配置”不在一个地方,比如在res/values/config.xml中。 - JJD

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接