android 4.2.1 一种高效log打开方式

2024-04-23 18:58

本文主要是介绍android 4.2.1 一种高效log打开方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        啰嗦下:发现自己的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打开方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/929615

相关文章

Java中的StringBuilder之如何高效构建字符串

《Java中的StringBuilder之如何高效构建字符串》本文将深入浅出地介绍StringBuilder的使用方法、性能优势以及相关字符串处理技术,结合代码示例帮助读者更好地理解和应用,希望对大家... 目录关键点什么是 StringBuilder?为什么需要 StringBuilder?如何使用 St

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE

MySQL重复数据处理的七种高效方法

《MySQL重复数据处理的七种高效方法》你是不是也曾遇到过这样的烦恼:明明系统测试时一切正常,上线后却频频出现重复数据,大批量导数据时,总有那么几条不听话的记录导致整个事务莫名回滚,今天,我就跟大家分... 目录1. 重复数据插入问题分析1.1 问题本质1.2 常见场景图2. 基础解决方案:使用异常捕获3.

SQL中redo log 刷⼊磁盘的常见方法

《SQL中redolog刷⼊磁盘的常见方法》本文主要介绍了SQL中redolog刷⼊磁盘的常见方法,将redolog刷入磁盘的方法确保了数据的持久性和一致性,下面就来具体介绍一下,感兴趣的可以了解... 目录Redo Log 刷入磁盘的方法Redo Log 刷入磁盘的过程代码示例(伪代码)在数据库系统中,r

Android实现在线预览office文档的示例详解

《Android实现在线预览office文档的示例详解》在移动端展示在线Office文档(如Word、Excel、PPT)是一项常见需求,这篇文章为大家重点介绍了两种方案的实现方法,希望对大家有一定的... 目录一、项目概述二、相关技术知识三、实现思路3.1 方案一:WebView + Office Onl

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络

Android实现悬浮按钮功能

《Android实现悬浮按钮功能》在很多场景中,我们希望在应用或系统任意界面上都能看到一个小的“悬浮按钮”(FloatingButton),用来快速启动工具、展示未读信息或快捷操作,所以本文给大家介绍... 目录一、项目概述二、相关技术知识三、实现思路四、整合代码4.1 Java 代码(MainActivi

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

如何解决idea的Module:‘:app‘platform‘android-32‘not found.问题

《如何解决idea的Module:‘:app‘platform‘android-32‘notfound.问题》:本文主要介绍如何解决idea的Module:‘:app‘platform‘andr... 目录idea的Module:‘:app‘pwww.chinasem.cnlatform‘android-32

Android实现打开本地pdf文件的两种方式

《Android实现打开本地pdf文件的两种方式》在现代应用中,PDF格式因其跨平台、稳定性好、展示内容一致等特点,在Android平台上,如何高效地打开本地PDF文件,不仅关系到用户体验,也直接影响... 目录一、项目概述二、相关知识2.1 PDF文件基本概述2.2 android 文件访问与存储权限2.