啰嗦下:发现自己的blog被转载了,不过没有注明出处,有点痛并快乐着的感觉。这里正式申明下:转载请注明出处,感谢。如有商用目的请务必知会本人。

在android上工作不少时间,很多工作都是在解bug上。大多数情况下,debug总是要用到log,系统自带的或者自己添加的。在有的应用的某些功能上,android自带的log基本足够了,这个时候只要打开log开关就行。一般应用的log开关基本都是系统声明的一个常量作为标记,比如:

        private static final boolean DEBUG = false;

调试的时候只要将这些常量的值修改下,就能打开log。不过这个就涉及到修改代码,编译,重新安装APK,有点麻烦了。

和以往一样,android总是能给我们带来一些惊喜,接着就说说某些很特殊很强大的log开关。在调试4.2.1彩信模块的时候,发现涉及彩信发送代码里面的log开关基本都是下面这个方式:

        if (Log.isLoggable(LogTag.TRANSACTION, Log.VERBOSE)) {            Log.v(TAG, "Creating TransactionService");        }

进入framework中查看isLoggable方法的定义,发现这是一个用了JNI的方法。不过方法声明上有很多注释。仔细看了下,发现这是android给大家的一个礼物。
原文大致意思:检查当前的tag是否在指定的log级别。一般默认的log级别是INFO,这也就意味着在这之上包括INFO的log都会被输出。(接下来是关键:)你可以通过设置系统属性修改默认的log级别,执行如下命令即可:

        setprop log.tag.;YOUR_LOG_TAG> ;LEVEL

你也开可以将这句代码写进local.prop文件里面,并且将这个文件放到/data/local.prop。根据上面的指导,笔者试着执行下下面的命令:

        adb shell setprop log.tag.Mms:transaction VERBOSE

接着发了一条彩信试验,有效log都输出来了。

我们在这个基础上在进行一些挖掘,看看google还给我们留了哪些惊喜。从上面第二段代码中的LogTag.TRANSACTION,可以看到Mms的包里面有个LogTag.java文件,发现里面果然声明了不少常量:

    public static final String TRANSACTION = "Mms:transaction";    public static final String APP = "Mms:app";    public static final String THREAD_CACHE = "Mms:threadcache";    public static final String THUMBNAIL_CACHE = "Mms:thumbnailcache";    public static final String PDU_CACHE = "Mms:pducache";    public static final String WIDGET = "Mms:widget";    public static final String CONTACT = "Mms:contact";

这一个个都是彩信里面重要log开关。知道了这些以后调试彩信就方便多了,不用换APK,在出问题的手机上就直接能抓到有效log,能提升不少工作效率。我们接着载回去看看isLoggable(String tag, int level)在哪里有调用,发现除了framework层和Mms应用,还有Contacts等重要模块有调用,以后调试这些模块都会方便很多。

最后在附上过去发现的Email模块中两个特殊的后台开关。在Email登陆界面输入如下账户名和密码能进入Email的log开关配置界面。

        //  Username: d@d.d        //  Password: debug

还有一个进入的方式就更加有深度了,在联系人的拨号盘界面输入*#*#36245#*#*,这个数字也是email这个单词对应九宫格的输入数字O(∩_∩)O,接着按拨号键就能进入Email的开关打开项。

从android源码中我们能看到googler在自家的平台上开发APK的功力,每个APK都有自己的风格。慢慢的沉淀,再加上自己的思考,能学到很多知识。


更多相关文章

  1. 使用QQ2013时连接Android物理设备Eclipse发现不了
  2. android发送彩信的两种方法
  3. Android中的常量 DEFAULT_KEYS_SHORTCUT
  4. Android彩信发送
  5. 在Android中发送短信和彩信,监听短信并显示
  6. 今天发现了一个不错的android加载动画
  7. 还原Android彩信数据库

随机推荐

  1. android竖着的seekbar
  2. Android(安卓)动态生成布局 (多层嵌套)
  3. 用java1.6编译android-froyo
  4. ImageButton一些总结
  5. Android中使用shape
  6. Android动态设置ViewPager是否可手指滑动
  7. Android(安卓)中指纹识别
  8. android中 Button 安装监听的三种形式
  9. Android(安卓)SDK 环境配置
  10. Android自定义View基础--Paint画笔设置样