视频教程,建议采用超清模式观看
在Android中一般都用Log输出日志,常见的有5个不同的级别
- Log.v()
- Log.d()
- Log.i()
- Log.w()
- Log.e()
当然很多程序员还比较习惯用System.out.println() 去输出日志,这种方式其实没有任何优势可言。建议大家放弃。
输出日志很简单,怎么控制日志的输出就值得研究下了,日志是用来调试程序的,当程序发布的时候日志就变得一无是处了。所以输出日志的原则就是:
程序开发阶段允许输出日志,发布阶段不允许打印日志。
如何去控制呢?如果你在上线前手动的删除所有日志,这个工作量就是很大了,一般情况下我们都是创建一个LogUtils工具类
public class LogUtils { public static final boolean DEBUG=true; public static void i(String tag,String msg){ if(DEBUG) { Log.i(tag, msg); } } }
用LogUtils中的方法去输出日志
LogUtils.i("MainActivity","info");这样我们就可以通过LogUtils中DEBUG变量去控制日志的输出,当程序调试的时候我们把这个值改为true,程序发布了,就把这个值改成false。这样就可以实现我们一开始的需求。
然而,这样的话,我们还需要在发布前夕手动的去改代码,能不能在发布前不改代码呢?这时候我们就要借助Gradle了,Android Studio集成了Gradle,这一点非常棒.我们需要打开app/build.gradle这个文件,做一个配置
buildTypes { debug{ // 开发阶段 buildConfigField "String", "API_URL",""http://test.example.com/api"" //定义了字符串变量 buildConfigField "boolean", "LOG_CALLS", "true" // 定义了boolean变量 true } release { // 发布了 buildConfigField "boolean", "LOG_CALLS", "false" minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }我们可以在buildType中配置一些全局变量,可以是String类型如“API_URL”,也可以是boolean,这里我们用到的就是LOG_CALLS这一个变量,注意一点debug{ ...} 这个指的是程序开发阶段,release{ } 指的是程序发布阶段。我们在开发和发布阶段分别定义了对应不同值的LOG_CALLS,接下来我们就可以在LogUtils中使用这个全局变量了。
public class LogUtils { public static final boolean DEBUG=BuildConfig.LOG_CALLS; public static void i(String tag,String msg){ if(DEBUG) { Log.i(tag, msg); } } }其中BuildConfig.LOG_CALLS就是我们在上面定义的变量,这个变量在开发阶段是true,发布阶段自动的就变成了false。我们这样就干了一个一劳永逸的事了。