逮虾户!Android程序调试竟简单如斯(上)

简介: 本节讨论的是Android开发中老生常谈的程序调试。一个开发仔的日常离不开:写BUG和解BUG,特别是多人协作的时候,帮别人擦屁股(解Bug)的情况屡见不鲜。另外,接盘别人的项目,着手解Bug也能帮你快速的上手项目。综上,修炼好「调试」这门技能显得尤为重要。但是,但是感觉很多玩家还停留下无脑打印的阶段,所以有了这篇文章。

1.无脑静态调试


解释下这个标题:


  • 无脑觉得哪里有问题就打印哪里


  • 静态:每次想打印,都要去修改代码,然后重新运行程序。


适用于:想查看变量的值在某一时刻是否异常!


接着来说下两种常用的调试方法:


Toast打印法


新手Android开发仔最爱调试法,使用简便,仅需一行代码,轻松打印:


Toast.makeText(MainActivity.this, "Toast调试", Toast.LENGTH_SHORT).show();


方便是挺方便的,不过有一点要注意:Android 5.0后,如果把「消息通知的权限」 关闭掉的话,部分机型是不会显示Toast的!你还可以使用Snackbar来显示值进行调试:


Snackbar.make(父view, "Snackbar调试", Snackbar.LENGTH_SHORT).show();


或者其他变通的方法,比如在页面上添加一个TextView,把值直接显示在文本框上。


Log日志打印法


Toast调试是挺爽的,但是有两个问题:


  • 1.想调试打印多个值的话,Toast会弹个不停,毕竟同一时刻只有「一个」Toast显示在前台;


  • 2.Toast间隔一段时间后会消失,即使你设置了Toast.LENGTH_LONG


可能你一走神,没来得及看调试的值,Toast就消失了。我们着实需要一种无需担心调试 结果消失的方法——「Log日志打印法」,就是利用Android系统提供的Log类,在调试 的地方,把日志打印到「Logcat控制台」上,使用方法也非常简单:


Log.d("TAG", "Log调试")


当代码执行到这一句的时候,就会在Logcat控制台打印调试信息,另外Logcat默认 会打印出所有的日志信息,我们可以做一些过滤来定位到我们调试的日志信息。 首先是:

日志类型」,Android支持6种日志类型,依次如下:


  • Verbose:详细,所有类型的日志信息。


  • Debug:调试,调试用的日志信息。


  • Info:信息,正常使用时需要关注的日志信息。


  • Warn:警告,可能有问题,但没发生错误的日志信息。


  • Error:错误,运行时出现严重错误的日志信息。


  • Assert:断言。


温馨提示

不要上来就Error级别,我以前打Log全部用Log.e,原因是日志信息是红色的,好看... 觉得颜色不好看,你可以按照下述的操作进行自定义。


打开「Settings」-> 「Editor」->「Colors Scheme」->「Android Logcat」 选择日志类型,然后去掉勾选,然后点击选择颜色色值



这是笔者配色方案,读者可以自行调整为喜欢的颜色:


  • Assert:8F0005


  • Debug:0070BB


  • Error:FF0006


  • Info:48BB31


  • Verbose:BBBBBB


  • Warning:BBBB23


设置后的配色如图所示:



行吧,知道可以通过Log类打印调试和自定义Logcat配色,顺带也提提「日志过滤」的姿势吧。


  • 自定义Logcat日志头信息的显示内容:点击面板上的「Logcat Header」来设置日志头信息



可选设置内容如下:



右侧还可以「过滤日志信息」,支持正则,再右面是过滤特定日志的选项。



如果觉得还不够的话,可以点击最右侧的「Edit Filter Configuration」来配置一个自

己的过滤器。



另外,还可以对进行「日志搜索」,鼠标点击Logcat中间区域获得焦点,Ctrl + F 调出 搜索工具栏,接着搜索相关的日志内容。



顺带提下Log类的一个容易忽略的小坑:


Log类只会打印4000个字符,超过部分不打印!!!


2.有脑动态调试法


其实就是用Android Studio提供的Debug模式来程序调试,相比起前面的 Toast打印法和Log日志打印法,稍微复杂一点,要点学习成本,还有动脑子, 最重要是可以动态调试,很多新手玩家貌似对这个都望而却步,其实不难,待我 由浅入深走一遭,来学学Android Studio Debug核心技巧。


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
9月前
|
数据采集 编解码 Ubuntu
Android流媒体开发之路二:NDK C++开发Android端RTMP直播推流程序
Android流媒体开发之路二:NDK C++开发Android端RTMP直播推流程序
211 0
|
6月前
|
存储 传感器 定位技术
《移动互联网技术》 第四章 移动应用开发: Android Studio开发环境的使用方法:建立工程,编写源程序,编译链接,安装模拟器,通过模拟器运行和调试程序
《移动互联网技术》 第四章 移动应用开发: Android Studio开发环境的使用方法:建立工程,编写源程序,编译链接,安装模拟器,通过模拟器运行和调试程序
60 0
|
6月前
|
Java Android开发 开发者
1024程序节|Android框架之一 BRVAH【BaseRecyclerViewAdapterHelper】使用demo
BRVAH是一个强大的RecyclerAdapter框架(什么是RecyclerView?),它能节约开发者大量的开发时间,集成了大部分列表常用需求解决方案。为什么会有它?请查看「Android开源框架BRVAH由来篇」该框架于2016年4月10号发布的第1个版本到现在已经一年多了,经历了800多次代码提交,140多次版本打包,修复了1000多个问题,获得了9000多star,非常感谢大家的使用以及反馈。
137 0
|
XML Java Android开发
Android Studio开发APP启动程序时开屏简单动画效果快速有效解决方案
Android Studio开发APP启动程序时开屏简单动画效果快速有效解决方案
1324 0
Android Studio开发APP启动程序时开屏简单动画效果快速有效解决方案
|
4月前
|
网络协议 Android开发 虚拟化
Android Studio无法运行程序调试程序出现Unable to connect to ADB.Check the Event Log for possible issues.Verify th
Android Studio无法运行程序调试程序出现Unable to connect to ADB.Check the Event Log for possible issues.Verify th
59 0
Android Studio无法运行程序调试程序出现Unable to connect to ADB.Check the Event Log for possible issues.Verify th
|
6月前
|
测试技术 开发工具 数据库
《移动互联网技术》第十一章 Android应用工程案例: 掌握Android系统的需求分析和设计以及 Android项目的程序测试和版本管理方法
《移动互联网技术》第十一章 Android应用工程案例: 掌握Android系统的需求分析和设计以及 Android项目的程序测试和版本管理方法
70 0
|
8月前
|
XML Java Android开发
#4,Android Studio Android程序结构 工程目录介绍 文件作用 运行配置文件AndroidManifest.xml
#4,Android Studio Android程序结构 工程目录介绍 文件作用 运行配置文件AndroidManifest.xml
|
8月前
|
存储 Android开发 开发者
#2,Android新建第一个程序 Hello Android 模拟手机
#2,Android新建第一个程序 Hello Android 模拟手机
|
8月前
|
Android开发
Android JetPack组件之ViewModel状态的保存(程序在后台被系统杀死数据也存活)
Android JetPack组件之ViewModel状态的保存(程序在后台被系统杀死数据也存活)
98 0
|
9月前
|
开发工具 Android开发
Android上机实验-1 开发第一个Android程序
Android上机实验-1 开发第一个Android程序
67 0