gradle配置日志打印信息
<p>gradle中配置正式测试打印框架:</p>
<p>我们知道在Android开发过程中为了调试代码经常在代码中添加一些日志信息,但是正式环境是不需要这些日志信息的,而且过得日志打印操作也会对App的性能有影响。</p>
<p>一个比较好的办法就是在App的测试环境中打印日志信息,在正式环境中屏蔽日志信息,那么如何实现呢?通过代码么?通过代码也是可以实现的,但是这样显得太原始了,其实Android studio的gradle插件已经提供了这样的功能。</p>
<p>那么如何通过gradle配置日志打印信息呢?</p>
<pre><code class="language-java">buildTypes {
debug {
// 显示Log
buildConfigField &quot;boolean&quot;, &quot;LOG_DEBUG&quot;, &quot;true&quot;
//混淆
minifyEnabled false
//Zipalign优化
zipAlignEnabled true
// 移除无用的resource文件
shrinkResources true
//加载默认混淆配置文件
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
//签名
signingConfig signingConfigs.debug
}
release {
// 不显示Log
buildConfigField &quot;boolean&quot;, &quot;LOG_DEBUG&quot;, &quot;false&quot;
//混淆
minifyEnabled true
//Zipalign优化
zipAlignEnabled true
// 移除无用的resource文件
shrinkResources true
//加载默认混淆配置文件
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
//签名
signingConfig signingConfigs.relealse
}
}</code></pre>
<p>在Android studio的module的gradle配置文件中,在buildTypes节点下可以配置自定义参数,这里我们在debug版本中定义LOG_DEBUG为true,在release版本中定义LOG_DEBUG为false。这样在编译的时候就会在gradle的编译类BuildConfig中生成成员变量:</p>
<p>LOG_DEBUG
1
若是正式环境则LOG_DEBUG的值为false</p>
<p>若是测试环境则LOG_DEBUG的值为true</p>
<p>所以这时候可以通过LOG_DEBUG变量的值控制日志是否打印。</p>
<pre><code class="language-java">/**
* 在Application的onCreate方法中初始化MLog日志框架
* 并根据apk环境判断是否显示日志信息
*/
if (BuildConfig.LOG_DEBUG == true) {
MLog.init(true);
} else {
MLog.init(false);
}</code></pre>
<p>我们实现的MLog框架的init方法</p>
<p>若传入的值为true,则表示执行日志打印操作,也就是可以显示日志信息。</p>
<p>若传入的值为false,则表示不执行日志打印操作,也就是不显示日志信息。</p>
<p>这样我们就实现了在测试环境打印日志,在正式环境中屏蔽日志的操作。</p>