2015-02-06 96 views
3

我在我的Android项目中使用Retrofit。在开发我启用完整日志输出为RestAdapter如下:如何为改造配置调试和发布日志级别?

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

当我烤发布日志级别设置为RestAdapter.LogLevel.NONE原因是显而易见的。

我想自动切换基于构建/文件夹结构此设置:

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

我如何才能将RestAdapter.LogLevel.FULLapp/src/debugRestAdapter.LogLevel.NONEapp/src/release

回答

5

最简单的方法是使用BuildConfig.DEBUG标志,该标志在调试构建时自动设置为true,在发布构建时自动设置为false。

我这样做像这样:

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

谢谢。我唯一不喜欢的地方是“配置”不在像res/values/config.xml这样的地方。 – JJD 2015-02-07 16:54:25

10

一个更好的办法来做到这一点是通过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(); 

这种方式在运行时没有检查,只在编译时

相关问题