android 4.2.1 一种高效log打开方式
来源:互联网 发布:反垃圾邮件软件 编辑:程序博客网 时间:2024/05/10 11:53
啰嗦下:发现自己的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都有自己的风格。慢慢的沉淀,再加上自己的思考,能学到很多知识。
- android 4.2.1 一种高效log打开方式
- Android 直接打开log的一种方法
- Android 手机log的一种方式
- Log打开android大门(1)
- 一种别样的打印Log的方式
- Android逆向之旅---爆破应用签名的一种全新高效方式(Native+服务器验证)
- Python log 的正确打开方式
- 给搜索换一种打开方式
- Android一种高效压缩图片的方法
- Android一种高效压缩图片的方法
- 一种简单高效的OpenCV图像遍历方式
- 一种高效双端队列(链表)实现方式
- 猴子理论——高效管理的一种方式
- Android 文件打开方式
- Android 文件打开方式
- Android 文件打开方式
- Android 文件打开方式
- Android 文件打开方式
- 23种设计模式-6.桥接模式(Bridge Pattern)
- Winsock异步编程步骤 WSAAsyncSelect
- 四、Oracle数据库之学习笔记---Oracle的表的基本查询(1)
- JDBC和Hibernate的区别
- Shell for&while 循环详细总结
- android 4.2.1 一种高效log打开方式
- VC 操作Excel的几种方式
- jsp、javascript打印九九乘法表
- 23种设计模式-7.装饰模式(Decorator Pattern)
- 中语言超酷特性 之 --- 多维泛指
- hibernate配置文件说明
- 傷身、敗德、折壽的根源
- C语言——结构体与联合体
- ERP设计感悟