Log工具在手机中的隐藏权限

摘要:

前几天,终于买到了期待已久的《第一行代码》(第2版)。但因工作太忙了,一直没时间看。元旦这两天终于有时间看了,却没想到刚上来就踩到坑了......

Log级别简介

相信用过Log日志工具的Android程序员都知道,Log的打印级别有5个,分别是:

  • verbose(琐碎级别)
  • debug(调试级别)
  • info(信息级别)
  • warn(警告级别)
  • error(错误级别)

问题引入

看到书中介绍了有关Log的快捷输入,之前没有使用过,就忍不住尝试了一下,下方是完成后的测试代码:

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Log.v(TAG, "onCreate: ");
        Log.d(TAG, "onCreate: ");
        Log.i(TAG, "onCreate: ");
        Log.w(TAG, "onCreate: ");
        Log.e(TAG, "onCreate: ");
    }
}

估计各位看到这样的代码,大脑不用转就知道会输出什么了。

然后我们运行下程序,看看是不是和你想的一样。(看下方输出结果)

Log工具在手机中的隐藏权限_第1张图片
log_hide.png

看到这样的日志信息,相信很多人和我的反应一样『纳尼…(⊙_⊙)???』

我们的调试级别已经是Verbose了,为什么只有两条日志信息,不应该是5条吗?

调试结果分析

从Android Monitor信息栏中,我们可以得到的信息:

  • 测试机型号:QiKU 8681-M02
  • 系统版本:Android 5.1(API 22)
  • 调试级别:Verbose
  • Log日志信息:
    • ...... W/MainActivity: onCreate:(Warn级别日志信息)
    • ...... E/MainActivity: onCreate:(Error级别日志信息)

从这样的信息中我们只能分析出打印了Warn级别和Error级别的日志信息,其他好像也分析不出什么东西。那换成Android模拟器再试试......

换成模拟器后却惊奇的发现5条日志信息都打印出来了。那看来问题的原因应该是出在手机上了。

寻找解决办法

之后,blogger通过在网上查阅资料,终于找到了针对『奇酷360手机』日志级别的设置方法:

需要在手机拨号界面输入 *20121220#,进入工程模式,对Log打印级别进行设置(如下图所示):

log_setting.gif

设置成LOGV级别后,再用手机跑一下程序,发现已经能正常打印了,如下图所示:

Log工具在手机中的隐藏权限_第2张图片
log_normal.png

问题拓展与思考

对于这个问题,我只能说我的手机已经解决了,但还是要对看博客的各位给些细节补充:

  • 在网上查阅资料的时候,发现部分华为、小米、酷派等手机也有这个问题,有这些手机的朋友可以试试。
  • 另外,这也让我想起一件事:几个月前,有位同事的手机一行日志也打印不出来,最后认为是手机坏了,不知道有没有朋友也遇到过这样的问题。接下来,各位再细心的看看上面的动态gif图,留意一下这个选项:Log print enable(工程模式二级页面的第1个选项),这个选项如果设置成Disable,那就真的一行日志都打印不出来了。
  • 看来,这个问题是由于手机厂商在生产手机后进行了一系列默认设置造成的。这样设置Log的原因应该在于减少不必要的日志信息打印,提高系统运行效率。当然,这只是个人推测,有知道原因的小伙伴可以在评论区留言,我们一起讨论讨论...O(∩_∩)O~
  • 最后,提醒一句,如果手机关机或重启,我们之前的Log设置会被系统重置,需要去重新设置Log的打印级别。

你可能感兴趣的:(Log工具在手机中的隐藏权限)